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

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Лучший способ сходу начать писать код лучше - правильно именовать члены классов. С многими очевидными и не очень проблемами помогают статические анализаторы и такие программы как PVS. Но сам рефакторинг больше завязан на вашу интуицию разработчика. Для её наработки нужна практика на задачах, с которыми вы ещё не работали или закомы лишь поверхностно.
    Ответ написан
    Комментировать
  • Как в телеграме чат-боту узнать кто в группе?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Насколько я помню, в целях безопасности боты не имеют прямого доступа к списку аккаунтов-участников чата. Самый простой способ - ловить апдейты от входа и выхода пользователей из чата, сохраняя их telegramID в каком-нибудь наборе уникальных айдишников, и, когда размер набора будет меняться, проверять условие количества.

    Тут есть проблема, ведь способ не отработает события входа тех, кто уже в чате. Можно решить, слушая события сообщений (отправка/редакт/удаление) и проверяя наличие данных пользователей в наборе.

    Напишите, если способ не сработает.
    Ответ написан
  • Как сделать автокликер на java android?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Комментировать
  • Почему не найден класс?

    @Ezekiel4 Автор вопроса
    Охотник на пиратов и сборщик монолитов
    Спустя несколько часов поиска разобрался сам. Если у кого будет тот же трабл, оставляю решение. В pom-файл maven-а нужно дописать блок build, добавить плагин maven assembly. Полный текст выглядит так, можете сравнить с этим же текстом выше.

    В строке study.DiscordBot замените содержимое на путь к своему главному классу. Актуальную версию плагина можно взять тут.

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>discord-application</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>16</maven.compiler.source>
            <maven.compiler.target>16</maven.compiler.target>
        </properties>
    
        <dependencies>
            <!-- https://mvnrepository.com/artifact/net.dv8tion/JDA -->
            <dependency>
                <groupId>net.dv8tion</groupId>
                <artifactId>JDA</artifactId>
                <version>5.0.0-alpha.9</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.3.0</version>
                    <configuration>
                        <!-- get all project dependencies -->
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <!-- MainClass in mainfest make a executable jar -->
                        <archive>
                            <manifest>
                                <mainClass>study.DiscordBot</mainClass>
                            </manifest>
                        </archive>
    
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <!-- bind to the packaging phase -->
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    Ответ написан
    Комментировать
  • Java Scanner. Как считать данные?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Если никаких арифметических операций не требуется, то вы можете ограничиться простым считыванием nextLine(), после чего получить массив подстрок, разделив строку по пробелам split(), а затем вывести их в обратном порядке.
    Если же всё же нужны числа, можете читать их методом nextInt(), или же взять получившиеся подстроки и каждую преобразовать в целое число.
    Ответ написан
    Комментировать
  • Как проверить тип данных в Java через if?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Тип переменной проверяют через instanceof

    Object r = 13.1;
    if (r instanceof Double) {
        System.out.println("matches double");
    }


    Распознать же строку как double можно, например, с помощью регулярки

    String example = "1331.2";
    if (Pattern.matches("^[\\+\\-]{0,1}[0-9]+[\\.\\,][0-9]+$", (CharSequence) example)) {
        System.out.println("matches double");
    }


    Можно найти какую-нибудь библиотеку, можно самому написать метод, посимвольно перебирающий строку. А можно просто воспользоваться Double.parseDouble(), не такой уж он и громоздкий.
    Ответ написан
    4 комментария
  • Какие вы можете выделить важные темы в изучении Java?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Всё зависит от того, что вы хотите. Java на компе, в андроиде и на сервере - это не совсем одно и то же.

    По-умолчанию достаточно освоить
    * основы (java core) + collections + алгоритмы
    * принципы ООП, DRY, KISS, YAGNI, SOLID, Clean code
    * работа с форматами xml и json
    * базы данных
    * юнит тесты
    * логгирование
    * git
    * maven или grandle

    Дальше зависит от направления. К моменту, когда вы освоите пункты выше, вы уже лучше будете понимать куда хотите пойти. Тогда просто зайдите на любой сайт поиска работы и посмотрите какие ещё технологии требуются в вакансиях по вашему направлению.
    Ответ написан
    Комментировать
  • Как я могу добавить клавиатуры (InlineKeyboard и ReplyKeyboard) в telegram bot?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Когда пользователь нажимает на кнопку (reply keyboard), она отправляет в чат сообщение, текст которого указан на кнопке. На текущий момент эти кнопки других функций не имеют.

    Далее вам нужно просто сделать проверку наподобии того, как вы проверяли команды /start, /joke и т.д. для фразы "Feed Back", в которой сделайте отправку сообщения ботом. В отправляемом сообщении установите кнопку с ссылкой, как на иллюстрации и всё.
    Ответ написан
    3 комментария
  • Как установить максимальное разрешение?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Если я правильно понял ваш вопрос, то нужная вам информация находится вот в этой части официальной справки:

    https://developer.android.com/training/camerax/con...
    Ответ написан
    Комментировать
  • Как телеграмм боту отвечать на смайлики?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Для распознавания эмодзи воспользуйтесь библиотекой emoji4j.
    Ответ написан
    Комментировать
  • Как сделать возможность игры в Minecraft прямо из браузера?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Самый простой и дешёвый (из всех возможных) вариант это сделать - написать свой майнкрафт. В качестве примера могу привести minecraft classic, который сделали на 10-летие майнкрафта.
    Ответ написан
    Комментировать
  • Как сделать массив с лучшими игроками?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Пройдясь циклом по массиву нужно узнать место вставки. Обнаружив его, просто вставляете число и по-очереди меняете все последующие элементы массива на предыдущие. Надеюсь, понятно объяснил.

    int[] insertToIntArr(int[] arr, int num) {
        for (int i = 0; i < arr.length; i++)
            if (arr[i] > num)
                arr[i] = arr[i] + num - (num = arr[i]);
        return arr;
    }
    Ответ написан
    Комментировать
  • Как получить telegram username?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Чтобы получить юзернейм, пишите:
    update.getMessage().getFrom().getUserName()

    Но у пользователя может не быть юзернейма. Однако вы можете узнать его "имя" и "фамилию":
    update.getMessage().getFrom().getFirstName()
    update.getMessage().getFrom().getLastName()

    Кроме того, из пользователя ещё можно вытащить информацию о том, на каком языке у него система:
    update.getMessage().getFrom().getLanguageCode()
    Возвращает строку в формате IETF, например "ru" для русского языка
    Ответ написан
    Комментировать