2015-03-24 5 views
0

Привет У меня проблема с выходом из цикла. Мой вход (он может ввести любое число целого) должен бытьВыход из While (hasNextInt())

Add 10 5 //input then after I press enter it supposed to show the output 
Items added: [5, 10] //output 

Но вместо этого я получаю

Add 10 5 //enter 
Add 2 //I need to enter another input to get the output 
Items added: [5, 10] //output 

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

public static void main(String [] args) throws NoSuchElementException { 

     StackLL <Integer> stack = new StackLL <Integer>(); 
     Scanner sc = new Scanner(System.in); 
     String op; 

     while (sc.hasNext()) { 
      op = sc.next(); 

      if (op.equals("Add")) { 
       // Fill in the code 
       while (sc.hasNextInt()){ 
        stack.push(sc.nextInt()); 
       } 
       System.out.print("Items added: "); 
       System.out.print(stack.toString() + "\n"); 
      } 

      else if (op.equals("Query")) { 
       // Fill in the code 
       while (sc.hasNextInt()) { 
        int query = sc.nextInt(); 
        int pop = query - 1; 
        while (query!=pop) 
         pop = stack.pop(); 
       }  
       sc.nextLine(); 
       System.out.println("Query met: " + stack.toString()); 
      } 
     } 
    } 
+0

добавить 'sc.nextLine()' после вашего нахождения в вашем случае, если – Duffydake

+0

Он по-прежнему не работает. У меня все еще такая же проблема – newb

+0

'while (sc.hasNextInt())' будет ждать, пока у вас есть что-то еще, кроме целого. дважды вызовите 'sc.nextInt()'. Если вы можете иметь более 2 целых чисел, используйте sc.nextLine() и разделите его. – Duffydake

ответ

0

От http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

Следующая() и методы hasNext() и методы их компаньонов примитивного типа (например, nextInt() и hasNextInt()) первый пропустить любой вход, соответствует шаблону разделителя, а затем пытается вернуть следующий токен. Оба hasNext и следующие методы могут блокировать ожидание дальнейшего ввода. Независимо от того, блокирует ли блок hasNext метод, будет ли заблокирован его связанный следующий метод.

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