2015-02-20 3 views
-1

Я использую Java и у меня есть код следующим образом:сканер не работает, когда я нажимаю войти

Scanner scanner = new Scanner(System.in); 
    while (true) { 
     String token = scanner.next(); 
     if (token.equals("$")) break; 
     if (token.equals("(")) do sth; 
     else if (token.equals(")")) do sth; 
     else { 
      do sth 
     } 
    } 

, как вы можете увидеть в приведенном выше коде, если ввести н в консоли, то вы вводите $ в конец, то программа поймет конец ввода, и сканер сможет успешно получить каждое слово строки успешно, но вместо этого я хочу, когда пользователь нажимает, затем сканер захватывает всю строку и начинает читать ее слово за словом, я попробовал это путь:

Scanner scanner = new Scanner(System.in); 
    while (scanner.hasNext()) { 
     String token = scanner.next(); 
     if (token.equals("(")) builder.buildOpenBracket(); 
     else if (token.equals(")")) builder.buildCloseBracket(); 
     else { 
      int number = Integer.parseInt(token); 
      builder.buildElement(number); 
     } 
    } 

но теперь прорам работает вечно и ничего не происходит pends

+1

делает это 'если (token.equals (" (")) делать, компилирует ?? –

+0

Почему вы ожидаете, что код выйдет из цикла while? – SMA

+0

@RC. да он компилирует –

ответ

0

Во всяком случае я установил это так:

Scanner scanner = new Scanner(System.in); 
    String token = scanner.nextLine(); 
    Scanner scannerToken = new Scanner(token); 
    while (scannerToken.hasNext()) { 
     String statement = scannerToken.next(); 
     if (statement.equals("(")) 

     else if (statement.equals(")")) 

     else { 

     } 
    } 
0

Во-первых,
прочитать новую строку и сохранить его в виде строки, вы должны использовать .nextLine()

+0

Я хочу, чтобы заставить его работать, когда пользователь вводит ввод (я не хочу использовать $) –

+0

Просто попробуйте if (token.equals ("")) –

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