Ответы пользователя по тегу Java
  • Можно ли считать интерфейс способом описания типа данных в JAVA?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Интерфейс является типом данных.
    someObject instanceof InterfaceOfSomeObject - вернет вам true
    Интерфейсы понадобились в связи с тем, что в Java нет множественного наследования, нельзя наследоваться от двух и более абстрактных классов, а вот интерфейсов можно имплементировать сколько угодно.
    Пример из жизни: Человек может быть, Водителем, Отцом, Мужем и Сантехником. Т.е. класс Человек, имплементирует интерфейсы Водитель, Отец, Муж, Сантехник. При этом Автомобилю важно что он Водитель, и абсолютно наплевать на то что он чей-то Муж. Более того, когда в Автомобиль сядет Робот, имплементирующий интерфейс Водитель, то он так же прекрасно сможет взаимодействовать с Автомобилем.
    Ответ написан
  • Как сделать расчет трех 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.
    Ответ написан
  • Как вывести буквы фигурами не зная циклов?

    @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 занимает одну строку, а последовательность, по которой его можно найти, находится в начале этой строки.

    Если так, то взять часть строки, начиная с первого символа после ключевой последовательности, и до конца строки.
    Ответ написан
  • Это правда, что на Java работа чаще всего скучная и легаси код?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Это не проблема Java, это с любым языком так, жизнь такая.
    Подумайте сами, что такое легаси код? Это работающее ПО которое приносит деньги, а значит есть из чего платить достойную зарплату. Но поддерживать его скучно и не интересно (хотя не факт).
    Что такое новый проект? Это лотерея, не известно, окупится ли результат, а иногда даже не известно, будет ли этот результат. Следовательно, денег либо нет, работаем на перспективу, либо четкий ограниченный бюджет, привлеченный от инвестора. А когда и если проект начнет приносить деньги, он станет легаси, и см. п.1.
    Ответ написан
  • Почему один класс не видит переменных другого?

    @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()

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

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Это Item в RecyclerView, для него создается свой макет, который определяет как он будет выглядеть и из каких элементов состоять.
    В проекте Minimal-Todo макет элемента лежит тут: https://github.com/avjinder/Minimal-Todo/blob/mast...
    Понял я это из вот этого куска кода:
    5efced2c9b9fe948144892.png
    За то что Item будет свайпаться отвечает вот этот код:
    5efceded923b3937444767.png

    А вообще, проект не самый лучший для того чтобы по нему учиться. Код очень плохо организован.
    Ответ написан
  • Random числа без повторений?

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

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Попытаюсь дать универсальный ответ:
    Если главным риском для вас является возможность трудоустройства в будущем, то посмотрите, сколько прикладного софта написано на языке, который вы собрались изучить.
    Потому что, легаси код, в любом случае не оставит вас без работы. Даже если вы попадете в момент, когда язык начнет умирать, т.е. на нем перестанут писать новый софт. Вам всё равно хватит работы, и зарплата ваша при этом будет только расти, потому что количество специалистов начнет уменьшаться.
    И да, JAVA еще не умирает, совсем, даже намеков на это нет.
    Ответ написан
  • Можно ли с помощью 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
    Ответ написан
  • Можно ли создавать программы без JDK?

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

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Было бы здорово, если бы вы написали, что конкретно не работает в вашем коде.
    Из тех ошибок что я заметил:
    sc.nextLine() - возвращает строку введенную пользователем
    следовательно команда: ADD 4 Какое-то дело на четвёртом месте
    не попадет в ветку case "ADD"
    т.е. как минимум вам нужно после получения строки sc.nextLine() - сохранять ее в переменную, парсить, выделять из нее команды и параметры, а уже потом описывать ваш switch

    А сейчас, у вас по идее работает только LIST а на все остальное вы получаете "давайте выберем действие"
    Ответ написан
  • Нормально ли изучать android разработку по startandroid?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Нормально с них начать, дальше информацию нужно черпать из официальных источников и книг. А еще полезно заглядывать в исходный код.
    Что касается актуальности уроков. Ну да, некоторые устарели, некоторые сильно устарели. Но в этом можно будет разобраться потом.
    Ответ написан