2016-02-06 6 views
-3

Я пытаюсь попросить пользователя продолжать вводить цифры до тех пор, пока они не набирают -1 после того, как они сделают код. Спасибо, что увидели позже! Я как бы застрял прямо сейчас, потому что мой цикл представляет собой бесконечный цикл, и я пытаюсь решить его без использования итераций. Это то, что у меня есть.Чтение номеров до тех пор, пока не будет выполнено условие

Scanner reader = new Scanner(System.in); 
System.out.println("Type numbers: "); 
int num = Integer.parseInt(reader.nextLine()); 
while (num < -1 || num > -1) { 
    System.out.println(num); 
     if (num == -1) { 
     System.out.println("Thank you and see you later!"); 
     break; 
    } 

} 
+0

Вашего цикл является бесконечным, потому что вы используете то же самое значение «num», введенное первоначально. Он никогда не меняется внутри цикла и не имеет шансов измениться, понять? –

+0

@SashaSalauyou Да, я знал, что это проблема, я просто никогда не знал, что вы можете положить Integer.parseInt (reader.nextLine()); Сам по себе я думал, что вам нужно все время назначать его переменной. – Nabz

ответ

1

Попробуйте этот код:

Scanner reader = new Scanner(System.in); 
int num = 0; 
System.out.println("Type numbers: "); 
while(true){ 
    //get user input 
    num = Integer.parseInt(reader.nextLine()); 
    if(num == -1){ 
     System.out.println("Thank you and see you later!"); 
     break; 
    } 
} 
+0

Это работает, но я хочу, чтобы «Типовые числа:» отображались только один раз на выходе, у меня было это, но я не предполагаю, что числа типов появляются снова и снова. – Nabz

+0

Просто поставьте «Тип чисел:» перед циклом. – Makandal

2

Вам необходимо прочитать ввод внутри цикла. Вы делаете это только один раз (перед входом в цикл), поэтому значение num никогда не изменяется. Кроме того, вы могли бы упростить условие при использовании while (num != -1)

Так в конечном счете, вы хотите что-то вроде этого:

Scanner reader = new Scanner(System.in); 
System.out.println("Type numbers: "); 
int num = 0; 
while (num != -1) { 
    num = Integer.parseInt(reader.nextLine()); 

     if (num == -1) { 
      System.out.println("Thank you and see you later!"); 

    }else{ 
     System.out.println(num); 
    } 

} 
+0

если вы нарушите право после выполнения условия, не нужно проверять его в 'while()' –

+0

@ Крис ваш код не работает, потому что каждый раз, когда вы вставляете число, оно действительно не проходит через цикл, и 0 всегда печатается после номера, который вы ввели, потому что num = 0 и никогда не изменяется – Nabz

+0

@Nabz, вы правы. Я сделал редактирование, чтобы очистить его. – Chris

Смежные вопросы