2013-04-08 100 views
0

如何从键盘读取字符输入 - '\ r'? 我测试了2种方法。 第一种方法是: 在第一个回合循环中不能停止行znak =(char)System.in.read();我不知道这是为什么。JAVA读取字符输入 - ' r'从键盘循环中

public static void lista() { 
    Ewidencja tmp = null; 
    char znak = 0; 
    for(Ewidencja el: Lista) 
    { 
     if (znak == 'Q') 
     { 
      el = tmp; 
     } 

     tmp = el; 

     System.out.println("[Enter] - zapisz"); 
     System.out.println("[Q] - cofnij"); 

     try { 
      znak = (char)System.in.read(); 
      System.out.println(znak); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     if(znak == '\r') 
     { 
      continue; 
     } 
     else if(znak != 'Q') 
     { 
      System.exit(-1); 
     } 
    } 
} 

第二种方法是使用类Scanner,但是这种方法不读取字符输入'\ r'。

+0

您可以检查空字符串。 'if(znak =='')//这就是一个换行符' – deadlock 2013-04-08 14:23:12

+0

有时它是'\ r',有时候它是'\ r \ n' ...但是真的,你应该使用扫描器。 – Shark 2013-04-08 14:29:35

+0

扫描仪不读取字符输入。在调试时,我按下输入,我debuger显示我'\ r' – 2013-04-08 14:35:42

回答

0

使用您的问题的一些代码,这是如何让扫描仪检测输入密钥是按下。

Scanner scan = new Scanner(System.in); 

for(Ewidencja el: Lista) { 
    znak = scan.nextLine(); 
    System.out.println(znak); 

    if(znak.equals("")) { 
     continue; 
    } 

} 
0

你也可以使用一个BufferedInputReader,而不是System.In直接访问:

的BufferedReader的BufferedReader =新的BufferedReader(新的InputStreamReader(System.in));

现在,你可以决定你是否喜欢阅读char或别的东西(​​)

String string =""; 
try{ 
    string = bufferedReader.readLine() ; 
}catch(IOException e){ 
    System.exit(-1); 
} 
if(string.trim().equals("")){ 
    continue; 
}else if(string.trim().equalsIgnoreCase("Q")){ 
    System.exit(-1); 
} 
... 

这样,你避免检测'\n''\r'和处理来自用户的“不清楚”输入更容易(“Q” !='Q',如果用户不小心键入了两个字母等字符不能被读取。)

0

感谢您的回复。这段代码对我非常有帮助,因为我不知道方法等于什么。

if(znak.equals("")) 
{ 
    continue; 
}