Я пытаюсь, чтобы мой пользовательский ввод не приводил к сбою моей программы, ограничивая то, что пользователь может вводить, например:
- только будучи int
- между 1-30
Код, который я написал, работает только до определенного момента. Если вы введете что-то, что не является int, он проверит это и попросит вас ввести снова. Опять же, если вы продолжаете вводить что-либо, кроме int. У меня есть еще один цикл while, если он набирает int, и если он находится за пределами зоны 1-30, он попросит пользователя ввести снова. Однако после этого, если пользователь введет другое «что угодно, кроме int», программа выйдет из строя. Я пытался объединить условие sc.hasnextint() и проверку ввода между 1-30, но если я поставлю sc.nextint() перед sc.hasnextint() и пользователь введет что-либо, кроме int, программа вылетит. Если я поставлю его после цикла условия, то пользовательский ввод не будет объявлен.
int choose;
System.out.print("type an integer: ");
Scanner sc=new Scanner(System.in);
while (!sc.hasNextInt() ) {
System.out.println("only integers!: ");
sc.next(); // discard
}
choose=sc.nextInt();
while (choose<=0 || choose>30)
{
System.out.print("no, 1-30: ");
choose=sc.nextInt();
}
sc.close();
sc.nextInt(), а затемcontinue(предположительно существующий) охватывающий цикл. - person FThompson   schedule 19.09.2012