0

如何从键盘循环读取字符输入 - '\r'?我测试了2种方法。第一种方法是:在第一轮循环中,for can't stop in line znak = (char)System.in.read(); 我不知道为什么会这样。

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,但此方法不读取字符 Enter '\r'。

4

3 回答 3

0

您也可以使用 aBufferedInputReader而不是直接访问 System.In:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)) ;

现在您可以决定是否喜欢阅读 achar或其他内容 ( String, Integer...)

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' 并且如果用户不小心输入了两个字母等,则无法读取字符。)

于 2013-04-08T14:38:18.800 回答
0

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

Scanner scan = new Scanner(System.in);

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

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

}
于 2013-04-08T15:06:46.337 回答
0

感谢您的任何回复。这段代码对我很有帮助,因为我不知道方法等于。

if(znak.equals("")) 
{ 
    continue; 
}
于 2013-04-09T23:05:58.197 回答