2016-12-11 4 views
0

Я попытался решить эту проблему в течение нескольких часов, не понимаю проблему.Java-сканер в то время как петля условно не соблюдает условия

Код

import java.util.Scanner; 

public class Scan { 

public static void main(String args[]) { 

System.out.println("Enter Number"); 

Scanner test = new Scanner(System.in); 

int g = test.nextInt(); 

while(g != -1){ 

System.out.println("Enter Number"); 

test.nextInt(); 
} 

test.close(); 

return; 
} 
} 

Проблема

(1) Если ввести число! = -1, то цикл в то время как работает, как ожидалось.

(2) Если вы вводите -1 в первом приглашении, код будет игнорировать цикл while, закройте сканер и выйдите из основного метода.

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

Почему он не выходит из цикла while, как в (1)?

ответ

0

Внутри while loop, когда вы берете ввод от пользователя, где он хранится? Не должно быть test.nextInt(); be g = test.nextInt();?

Вы столкнулись с этой проблемой, потому что, когда вы берете ввод от пользователя внутри while loop, вы не хранить его в переменной g и это причина, ваш while loop не перерывы, если пользователь вводит -1.

Вот ваш код после исправления этой незначительной ошибки.

import java.util.Scanner; 

public class Scan { 

public static void main(String args[]) { 

System.out.println("Enter Number"); 

Scanner test = new Scanner(System.in); 

int g = test.nextInt(); 

while(g != -1){ 

System.out.println("Enter Number"); 

g = test.nextInt(); //your input should be stored in g so that while loop exits if g becomes equal to -1 
} 

test.close(); 

return; 
} 
}