2017-02-05 3 views
0

Сообщает пользователю, если введенный номер четный или ровный. Мне нужна помощь по проверке ввода. Проверка, которую мне нужно сделать, заключается в том, что пользователь не может вводить ничего, кроме числа. Попытка выполнить проверку без метода try и catch.Как я могу выполнить проверку ввода?

import java.util.Scanner; 
    public class oddoreven { 
     public static void main (String [] args) { 
     Scanner input = new Scanner (System.in); 

     //declaractions 
     int num; 

     //while loop 
     do{ 
     System.out.println("PLease enter a number to see whether it is even or odd. To end tyype in -99."); 
     num = input.nextInt(); 

     // input valid 


     }while(num != -99); // loop ends 

// begins the method 
     public static void is_odd_or_even_number(int number){ 
     int rem = number%2; 


     \ 

ответ

1

Вы можете позвонить Scanner.hasNextInt(), чтобы определить, если следующий вход является int (и потреблять что-нибудь еще). Кроме того, вы можете сделать бесконечный цикл и break, когда вход -99 (или 99, ваши кодовые тесты для 99, но в подсказке указано -99). Наконец, вы должны вызвать свой метод. Нечто подобное,

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    int num; 
    do { 
     System.out.println("Please enter a number to see whether it is " 
       + "even or odd. To end type in -99."); 
     if (input.hasNextInt()) { 
      num = input.nextInt(); 
      if (num != -99) { // <-- directions say -99. 
       is_odd_or_even_number(num); 
      } else { 
       break; 
      } 
     } else { 
      System.out.printf("%s is not a valid int.%n", input.nextLine()); 
     } 
    } while (true); 
} 
0

Вы можете использовать regex, чтобы проверить все символы строки, введенные пользователем, являются ли цифры или нет,

num.matches("[0-9]+") // return true if all characters are digits 

или

num.matches("^[0-9]*$") // return true if all characters are digits 

, но до этого измените num = input.nextint() до num = nextLine() и изготовить num как String. если вы этого не делаете, вам не нужно проверять ввод пользователя, как вы требуете.

+0

'num' является' int' в сообщении. –

+0

@ ElliottFrisch я просто проигнорировал это, подумал, что если OP задает вопрос о валидации, то OP будет принимать входные данные как String. В любом случае, спасибо. –

0

Вы можете использовать Scanner.nextLine(), чтобы получить ввод строки. Затем прокрутите символы, чтобы убедиться, что все они являются цифрами. (только для целых неотрицательных чисел)

string rawInput = input.nextLine(); 
boolean validInput = true; 
for (char c : rawInput) { 
     if (!Character.isDigit(c)) { 
      validInput = false; 
      break; 
     } 
} 

if (validInput) { 
    int num == Integer.parseInt(rawInput); 
    // proceed as normal 
} 
else { 
    // invalid input, print out error message 
} 
Смежные вопросы