Также я хочу, чтобы программа автоматически проверяла и игнорировала, если пользователь вводит символ вместо числа. Потому что прямо сейчас, когда пользователь вводит, например, r вместо числа, программа просто завершается.
Возвращает, true если следующий токен во входных данных этого сканера может быть интерпретирован как int значение в базе данных по умолчанию с использованием nextInt() метода. Сканер не продвигается дальше любого ввода.
Вот фрагмент для иллюстрации:
Scannersc=newScanner(System.in); System.out.print("Enter number 1: "); while (!sc.hasNextInt()) sc.next(); intnum1= sc.nextInt(); int num2; System.out.print("Enter number 2: "); do { while (!sc.hasNextInt()) sc.next(); num2 = sc.nextInt(); } while (num2 < num1); System.out.println(num1 + " " + num2);
Вам не нужно parseInt беспокоиться об NumberFormatException. Обратите внимание, что, поскольку hasNextXXX методы не продвигаются дальше какого-либо ввода, вам, возможно, придется вызвать next(), если вы хотите пропустить "мусор", как показано выше.
условие num2 < num1 должно быть num2 <= num1, если num2 должно быть больше num1
не зная, что такое объект kb, я бы прочитал String а затем trying Integer.parseInt(), и если у вас нет catch исключения, то это число, если вы это сделаете, прочитайте новое, возможно, установив num2 в Integer .MIN_VALUE и использование того же типа логики в вашем примере.
Вы также могли бы попробовать разобрать строку в int, но обычно люди стараются избегать создания исключений.
Что я сделал, так это определил регулярное выражение, которое определяет число, \d означает цифровую цифру. Знак + означает, что должна быть одна или несколько цифровых цифр. Лишнее \ перед \d связано с тем, что в Java \ является специальным символом, поэтому его приходится экранировать.