2013-11-17 4 views
0

Во-первых, я попробовал:Как проверить, нажата ли клавиша ввода в сканере?

while (!(in.nextLine().equals(""))) 
    arrayList.add(in.nextInt()); 

Это не работает слишком хорошо на всех для меня. Вместо этого я попробовал:

while (in.hasNextint()) 
    arrayList.add(in.nextInt()); 

В основном я типа чисел, разделенных пробелами, а затем ввести некоторую букву и нажмите клавишу ВВОД. Это отлично работает в среде IDE. Однако, если я попытаюсь скомпилировать и запустить его с помощью командной строки, это вызовет ошибку на моем лице: InputMismatchException. Наконец, я попробовал:

while (in.nextLine() != null) 
    arrayList.add(in.nextInt()); 

И это не сработало (!) Любые идеи?

+0

В какой строке это исключение происходит? Мы могли бы увидеть полную (небольшую) программу, чтобы показать это. И вход, который вы подаете в эту программу –

+0

Плюс обязательное упоминание о том, что [ommiting braces - плохая идея] (http://cafe.elharo.com/blogroll/braceless-if-considered-harmful/) –

ответ

1

Для клавиатуры, вам потребуется

keyListener 

Вы можете сделать это в классе аннулируются (я имею в виду пустоту то же имя, как ваш класс) Например:

public Classname(){ 
    //stuff 
    window.addKeyListener(new KeyAdapter(){ 
//For every time the specific key is being pressed 
     public void keyPressed(KeyEvent e){ 
      KeyCode = e.getKeyCode(); 
       switch (KeyCode) { 
       case KeyEvent.VK_SPACE: 
        //stuff 
        break; 
       case KeyEvent.VK_H: 
        //stuff 
        break; 

       } 
      } 
     } 
//For every time the specific key is being released 
public void keyReleased(KeyEvent e){ 
      switch (e.getKeyCode()) { 
      case KeyEvent.VK_LEFT: //stuff 
break; 
      case KeyEvent.VK_RIGHT: //stuff 
    break; 

     } 
    }); 

} 

Также , Я думаю, что есть общественность

keyTyped(KeyEvent e) 

void который вы можете использовать.

Надеюсь, что это решает проблему ур, если он не дает мне знать, комментируя. :)

0

Вам не нужно это проверять. Если вы прочитали из файла или терминала, «клавиша ввода будет нажата» (по крайней мере, метафорически), в противном случае ваш сканер не получит вход и будет ждать его. Если, OTOH, вы создаете сканер на String или что-то в этом роде, то String - это вход, и все. Никакое нажатие клавиши не изменит здесь.

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