Ответы пользователя по тегу Java
  • Как реализовать ночную тему в android приложении?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    При этом activity не должна пересоздаваться (важно)
    Хорошо подумайте, так ли это важно, потому что для смены темы без пересоздания активити прийдется писать много кода.
    Подробности по ссылке: https://dimlix.com/switch-theme-android/
    Ответ написан
  • Крашается игра после написания кода для кнопки "назад". Как исправить?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Поскольку код внутри листнера у вас весь в попытке, он крашится не может. Значит крашится само обращение к переменной btn_back через точку. Это может быть если btn_back = null
    Если findViewById возвращает вам null значит вью с id button_back нет в лейауте, с которым вы работаете.
    Ответ написан
    Комментировать
  • По какой книге лучше всего учить джаву для андроида?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Во первых, у Шилда есть книги и по другим версиям, просто возьмите предыдущее издание, и будет вам 8я.
    Во вторых, даже если вы изучите книгу с описанием 9й Java, вы узнаете то, что вам нужно знать, и чуть-чуть того, что не будет работать в 8й версии.
    Ну и в третьих, как вам уже здесь ответили. Котлин сейчас актуальнее, для Андроид-разработки, хотя моё лично мнение, что надо учить оба языка и начинать как раз с Java.
    Ответ написан
    6 комментариев
  • Что не так с кодом Java?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    В классе Main в методе main идет обращение к необьявленной переменной arrayList.
    Далее, кроме грубой синтаксической ошибки, здесь есть логическая. При вычислении периметра, вы просто складываете все координаты первой точки. Это точно не периметр!
    Для определения расстояния между двумя точками, нужно извлечь квадратный корень из суммы квадратов разностей всех координат.
    Ответ написан
    Комментировать
  • Как привести ArrayList к List?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Вам подошло бы что-то вроде:
    List<Lexeme> result=Lexemes.words.stream().map(
    pair -> new Lexeme(pair.getKey(), pair.getValue())
    ).collect(Collectors.toList());

    Если бы у вас type был строкой а не LexemeTypes
    Поскольку что такое LexemeTypes вы в вопросе не указали, остается только догадываться. Например, это Enum
    тогда получится так:
    List<Lexeme> result=Lexemes.words.stream().map(
    pair -> new Lexeme(LexemeTypes.valueOf(pair.getKey()), pair.getValue())
    ).collect(Collectors.toList());

    Но, правильнее будет создать еще один конструктор, который будет принимать строку в качестве type и сам знать, как её превратить в нужный LexemeTypes
    Ответ написан
    Комментировать
  • JAVA Как Получить значение переменной из for?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Вы
    System.out.println(numberS);  // тут значение еще верное
    выводите в цикле, а
    System.out.println(numberS);   // тут уже приходит последнее значение в массиве.
    вообще в другом методе.
    numberS это у вас, судя по всему, атрибут класса, иначе она не была бы вам видна в методе onUpdateReceived
    И чему же вы удивляетесь? У вас в методе send, при каждой итерации цикла меняется значение numberS, следовательно после последней итерации там последнее значение.
    Как решить вашу задачу правильно, к сожалению не могу подсказать, потому что вы не описали задачу, и по коду тоже сложно понять что он должен был делать.
    Ответ написан
    Комментировать
  • Как собрать в папку с JAVA файлами в APK?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    В сыром виде, этот декомпилированный проект скорее всего не сбилдится даже в студии.
    В любом случае, apk это не кучка зазипованных исходников, там зазипован уже скомпилированный код.
    Подробности неплохо описаны вот здесь: https://m.habr.com/ru/post/527584/
    Ответ написан
    Комментировать
  • Как сделать расчет трех TextView?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    TextView это не просто какое-то значение, это объект, у которого кроме его значения есть координаты на экране, размеры и еще куча всяких параметров, поэтому вы не можете его просто умножить.
    Методом setText вы установили новое значение, которое будет отображать TextViev
    Методом getText() вы можете получить его значение, но в виде CharSequence который можете преобразовать в строку String. Но со строкой вы не сможете делать математические действия, поэтому её надо преобразовать в числовое значение, например Integer:
    Integer.valueOf(insulin.getText().toString());
    Но, так делать не правильно. Данные нужно хранить отдельно от отображения. У вас в коде должны быть переменные, которые имеют нужные вам числовые типы, а в TextView только отображаются значения этих переменных. Тогда для выполнения нужных вам вычислений, или для сохранения значений вам не нужно будет получать значения из TextView, они уже будут вам доступны в виде ваших переменных.
    Ответ написан
    Комментировать
  • Как работает этот код?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    public void put(char ch) {
    if (putloc == q.length - 1) {
    System.out.println(" - Очередь заполнена");
    return;
    }
    putloc++;
    q[putloc] = ch;

    Ну давайте читать вместе.
    Есть переменная putloc которая хранит индекс последнего размещения в очереди, предполагаю, что при пустой очереди, putloc = -1
    Есть массив q в котором мы храним нашу очередь, определенного размера.
    При добавлении элемента в очередь, мы проверяем, а не равен ли индекс последнего помещенного в очередь элемента, максимальному индексу массива q, и если вдруг равен, то ругаемся и ничего не делаем.
    Если же массив еще не заполнен, мы определяем индекс массива по которому нужно разместить новый элемент очереди, путем инкремента переменной putloc.
    А затем помещаем в массив по новому индексу putloc полученное значение ch.
    Ответ написан
    7 комментариев
  • Как вывести буквы фигурами не зная циклов?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Измените класс HelloWorld, чтобы напечатать слово Hello, так, как показано ниже.

    В классе HelloWorld наверняка есть команда типа
    System.out.println("Hello world!");
    Нужно написать вместо нее:
    System.out.println("*    * ***** *     *      ****");
    System.out.println("*    * *     *     *     *    *");
    System.out.println("****** ***** *     *     *    *");
    System.out.println("*    * *     *     *     *    *");
    System.out.println("*    * ***** ***** *****  ****");
    Ответ написан
    Комментировать
  • Как конвертировать docx (и некоторые другие текстовые форматы) в pdf в Android Studio Java?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Из контекста вопроса, можно подумать, что вы ищете универсальный способ для всех форматов.
    Если это так, то такого способа нет.
    Вам нужно изучить описание интересующего формата, и писать под него реализацию. (с txt тут проще всего)
    Либо, гуглить готовые библиотеки, как вам уже посоветовали.
    Ответ написан
    Комментировать
  • Как отделить JSON от остального текстового файла?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    P.S. Забыл добавить, нужный json занимает одну строку, а последовательность, по которой его можно найти, находится в начале этой строки.

    Если так, то взять часть строки, начиная с первого символа после ключевой последовательности, и до конца строки.
    Ответ написан
    Комментировать
  • Почему один класс не видит переменных другого?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Потому что:
    1. Класс, это не просто файл в котором написан код. Пока вы не создали объект (экземпляр класса), его не существует, как и его переменных (за исключением статических переменных).
    2. Чтобы обратиться к переменным другого класса, вы должны обращаться к ним через этот класс, например:
    Question question = new Question();
    ....
    public boolean isCorrect(Question quest) {
        return quest.correctAnswer == quest.playerAnswer;
    }

    3. В третьих, в вашем случае, вы не должны вообще писать как написали вы, или как показал я в п.2 метод isCorrect должен быть методом класса Question и вызываться как: quest.isCorrect()

    И если вам показалось, что я ответил лучше чем Сергей Горностаев то вы ошибаетесь. Он полностью прав, читайте учебники, а на том сайте можете закрепить свои знания, хотя даже для этого собственный пет-проект лучше.
    Ответ написан
    1 комментарий
  • Random числа без повторений?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Вопрос у вас сформулирован крайне не понятно. Я с трудом догадываюсь, что вы хотите обеспечить, чтобы ваш рандом не выдавал одинаковые числа подряд, если не правильно понял, извините.
    У вас верятность выпадения единицы 35%, но в то же время вы хотите, чтобы она не выпдала дважды, т.е. при выпадении единицы, на следующей итерации шанс её выпадения должен быть 0%
    В таком случае шанс других чисел нужно увеличить. И таким образом подменять шансы после каждой итерации.
    Ответ написан
  • Можно ли с помощью ADB получить причину крэша приложения?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Попробуйте установить на телефоне дату, когда приложение у вас работало. Если запустится, то это точно не краш. Если не запуститься, можно еще попробовать, кроме смены даты, включить авиарежим, чтоб небыло доступа в интернет.
    Ответ написан
    Комментировать
  • В чем разница между "вызвать" и "обратиться" к члену класса?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    По всей видимости это последствия кривого перевода. В данном контектсте имеется ввиду, что код конструктора выполнится при создании экземпляра класса, и его нельзя вызвать иначе.
    Ответ написан
    Комментировать
  • Как решить проблему в Android Studio?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Вам нужно скачать и установить версию, которая подписана: Windows x86
    установиться она в папку C:\Program Files (x86)\Java\jdk-8
    В переменной Path соответственно тоже нужно указать: C:\Program Files (x86)\Java\jdk-8
    Ответ написан
  • В приложении Android Снова произошел сбой, как решить?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Было бы очень здорово, если бы вы конкретно описали, что именно ВСЁ вы пробовали.
    Конкретно в вашем случае надо пробовать смотреть logcat, это в Android Studio, когда вы запускаете приложение на подключенном телефоне или эмуляторе.
    Вот вам видео урок про logcat
    https://www.youtube.com/watch?v=cCmkOQcOex4

    P.S. я не поленился заглянгуть в ваш код, и там не вооруженным глазом видно, что у вас в postButton получается null (потому что findViewById(R.id.post_button) не найдет эту кнопку в layout.activity_main)
    А потом вы на postButton пытаетесь повесить обработчик.
    Но я уверен, это не единственная ошибка, научитесь использовать logcat.
    Ответ написан
  • Как из цикла сделать возврат значения?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Уберите else { return null;}
    тогда у вас будет выход из цикла, при первом обнаружении тройки, что логично, зачем проверять дальше если тройка найдена. Или после прохождения всех итераций цикла.

    Что касается качества кода, null это не та штука, которую принято возварщать в java, логично использовать для этого булево.
    И с именами переменных стоит поработать.
    Ответ написан
    Комментировать
  • Как вывести аватарки пользователей vk в андроид приложении?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Использовать VK API в частности метод users.get среди прочего возвращает поля photo_50, photo_100, photo_200_orig, photo_200, photo_400_orig, photo_max, photo_max_orig. Это ссылки на аватарку в разных разрешениях.
    Подробнее читайте тут: https://vk.com/dev/objects
    Ответ написан