2014-11-27 5 views
-1

Я пишу этот блок кода для запуска три раза. И каждый раз, когда пользователь вводит нецелое значение, тогда внутреннее время прерывается.Буфер сканера не очищается

while(i<=2) 
     { 
      total=0; 
      numOfint=0; 
      while (true) 
       { 

        System.out.print("Please enter an integer"); 
        if(!in.hasNextInt()) 
        {break;} 
        else 
        { 
        total+=in.nextInt(); 
        numOfint+=1; 
        } 
       } 
      avg[i]=new Average(); 
      avg[i].numb_ints=numOfint; 
      avg[i].total_ints=total; 
      System.out.println("Stats for average "+i+". Number of ints : "+avg[i].numb_ints+" Total : "+avg[i].total_ints+" Average: "+avg[i].avg_ints()); 
      i++; 
     } 

Проблема в том, что она работает только 1 раз. и второй раз он просто пропускает внутренний цикл while. Я думаю, что в буфере сканера есть последнее нецелое значение, которое не очищается. Пожалуйста, помогите мне в этом.

+0

условие цикла в то время (правда) будет исполнены навсегда? – drgPP

ответ

1

его, как только вы вошли в NAN он сломает все остальное, нет nextint в буфере, попробовать следующий сканер, попробуйте следующее:

if(!in.hasNextInt()){ 
String tmp=in.next(); 
break; 
} 
Смежные вопросы