Nano Hash - криптовалюты, майнинг, программирование

Проверить ввод десятичного числа в nextInt()

Я пытаюсь заставить свой код запрашивать сообщение об ошибке всякий раз, когда пользователь вводит десятичное число/отрицательное число, и будет продолжать цикл до тех пор, пока не будет реализовано положительное число больше 0.

Это то, что у меня есть до сих пор;

public static void numberFunctions()
{   



    System.out.println("Calculating a Factorial");
    Scanner myScan= new Scanner (System.in);
    System.out.println("Please enter the number you'd like to use: ");
    int number = myScan.nextInt();

    System.out.println(number);       

        if(number>0)
    {
        int factorial = 1;
        int count;

        for (count = number; count >=1; count --)
        {
            factorial = factorial * count;

            System.out.print(count +" * ");


        }

        System.out.println(" = " + factorial);

    }
    else
    {

        System.out.println("ERROR! Please enter a positive number");

    } 
}
19.11.2019


Ответы:


1

Сначала вы можете создать метод, например

public static int getInteger() {

}

В этом методе вы можете попросить пользователя ввести целое число, используя блок try catch внутри блока while loop, чтобы таким образом, если он введет double или String, он поймал исключение и попросил пользователя снова попытаться ввести целое число.

Как только вы это выясните, вы можете вызвать этот метод и проверить, больше ли возвращаемое число, чем 0.

Создав этот метод, вы всегда можете использовать его для запроса целых чисел у пользователя.

19.11.2019

2

Добавьте блок try/catch при вводе данных.

try {
    int number = myScan.nextInt();
}
catch(InputMismatchException e) {
    System.out.println("Enter integer numbers only");
    System.out.println(scanner.next() + " was not valid input.");
}
19.11.2019
  • OP спросил, вводит ли пользователь decimal number/negative. Чем поможет ваше решение? 19.11.2019
  • добавление try catch не остановит выполнение кода и перейдет к следующей итерации. Где он будет запрашивать целое число. 19.11.2019
  • проверьте здесь: stackoverflow.com/questions/58926596/ 19.11.2019

  • 3

    У вас все в порядке с частью проверки отрицательного числа. Однако, если пользователь введет недопустимую строку или действительное число, эта строка кода вызовет исключение, поэтому нам нужно перехватить эту ошибку: int number = myScan.nextInt(); Также рекомендуется всегда закрывать сканер после его использования, чтобы мы поместили его в наконец часть. Вот мой рекомендуемый код для вас:

    public static void  numberFunctions()
        {   
            System.out.println("Calculating a Factorial");
            Scanner myScan= new Scanner (System.in);
            System.out.println("Please enter the number you'd like to use: ");
            try {
                int number = myScan.nextInt();
                if(number>0)
                {
                    int factorial = 1;
                    int count;
                    for (count = number; count >=1; count --)
                    {
                        factorial = factorial * count;
                        System.out.print(count);
                        if (count != 1) {
                            System.out.print(" * ");
                        }
                    }
                    System.out.println(" = " + factorial);
                }else {
                    System.out.println("ERROR! Please enter a positive number");
                }
            }catch(InputMismatchException ex) {
                System.out.println("ERROR! Please enter a positive number");
            }finally {
                myScan.close();
            }
        }
    
    19.11.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..