2013-03-05 4 views
0

У меня есть этот небольшой фрагмент кода, который требует ввода от пользователя, когда он запускается, чтобы определить определенное значение. Я не хочу, чтобы пользователь мог вводить что-либо меньшее, чем 0, и ничего больше, чем 1 миллион, поэтому 0 = < YEARS_AHEAD = < 1000000.Установить границы для целочисленного ввода

Я просмотрел так много руководств и искал помощь по это и ничего не нашло. Это мой код.

Scanner reader = new Scanner(System.in); 
    int YEARS_AHEAD; 
    System.out.print("Enter the amount of years ahead: "); 
    while (true) 
     try { 
      YEARS_AHEAD = Integer.parseInt(reader.nextLine()); 
      break; 
     }catch (NumberFormatException nfe) { 
      System.out.print("This value must be an integer, please enter the number of years ahead again: "); 
     } 

ответ

1

Добавить простой, если:

if (YEARS_AHEAD < 0 || YEARS_AHEAD > 1000000) { 
    // say something to the user, retry entering the number 
} 

Другой вариант заключается в использовании цикла, а для этого:

int YEARS_AHEAD = -1; // invalid value 
while (YEARS_AHEAD < 0 || YEARS_AHEAD > 1000000) { 
    try { 
     System.out.print("Enter the amount of years ahead: "); 
     YEARS_AHEAD = Integer.parseInt(reader.nextLine()); 
    }catch (NumberFormatException nfe) { 
     System.out.print("This value must be an integer, please enter the number of years ahead again: "); 
    } 
} 
+0

Это не похоже на работу, как будто я вхожу письмо как мой ответ, что возвращается второй System.out.print и первый System.out.print Я новичок в Java, так что если вы могли бы опустить это для меня, это было бы хорошо. – ninopino1

0

После того, как вы прочитали вход

YEARS_AHEAD = Integer.parseInt(reader.nextLine()); 

проверьте с помощью if-else, разрешено или нет.

if(YEARS_AHEAD < 0 || YEARS_AHEAD >1000000){ 
    System.out.println("Invalid Input"); 
    }else{ 
    // do your processing here. 
} 
+0

Я не мог получить эту работу вообще. Может быть, более глупая версия? – ninopino1