2015-08-06 5 views
0

Как читать данные из ЦМД с помощьюИспользование сканера Java в ЦМД

я использовал этот метод, и он прекрасно работает, пока не прибудет на пользовательский ввод и отладчик попасть в hasnext и повесить

public String readCMD() { 
    try { 
     Scanner sc =new Scanner(in); 
     StringBuilder sb = new StringBuilder(); 
     String ch ; 
     while (sc.hasNext()) { 
      ch = sc.next(); 
      System.out.print(ch); 
      sb.append(ch); 

     } 
     return sb.toString(); 
    } catch (Exception e) { 
     System.out.println(e.getCause()); 
    } 
    return null; 
} 
+0

при вызове hasnext() он ждет для ввода текста –

ответ

0

Попробуйте использовать nextLine():

while (!(ch = sc.nextLine()).equals("")) { 
    System.out.print(ch); 
    sb.append(ch); 
} 

Таким образом, вы читаете в цикле, пока не прочтете пустая строка ...

1

Попробуйте

public String readCMD() { 
    try { 
     Scanner sc = new Scanner(System.in); 
     StringBuilder sb = new StringBuilder(); 
     String ch; 
     while (sc.hasNext()) { 
      ch = sc.next(); 
      System.out.print(ch); 
      sb.append(ch); 

     } 
     return sb.toString(); 
    } catch (Exception e) { 
     System.out.println(e.getCause()); 
    } 
    return null; 
} 
0

Вы должны выйти из цикла, используя какое-либо условие, здесь ниже, если пользователь вводит «выход» в качестве входных данных, то он будет вспыхивать:

public String readCMD() { 
    try { 
     Scanner sc =new Scanner(in); 
     StringBuilder sb = new StringBuilder(); 
     String ch ; 
     while (sc.hasNext()) { 
      ch = sc.next(); 
      System.out.print(ch); 
      sb.append(ch); 
      if(ch.equals("exit")) { 
       break; 
      } 

     } 
     return sb.toString(); 
    } catch (Exception e) { 
     System.out.println(e.getCause()); 
    } 
    return null; 
} 
+0

код останавливается у имеет следующий перед тем, как пользователь вводит вещь – Hazemdido

+0

Что вы подразумеваете под остановкой? программа будет ждать следующей строки ввода от пользователя до тех пор, пока пользователь не войдет в «exit» – Garry

+0

@Hazemdido .. это работает на меня. – Garry

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