0

キーボードから文字入力を読み取るにはどうすればよいですか - '\r' in loop? 私は2つの方法をテストします。最初の方法は次のとおりです。最初のループでは、行 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);
        }
    }
}

2 番目の方法はクラス Scanner を使用することですが、この方法では char を読み取れません '\r' を入力してください。

4

3 に答える 3

0

BufferedInputReaderSystem.In に直接アクセスする代わりに、a を使用することもできます。

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

charこれで、何かを読みたいか、それ以外を読みたいかを決めることができます ( 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'や処理を回避するのが簡単になります ('q' != 'Q' と、ユーザーが誤って 2 文字を入力した場合に char を読み取ることができないなど)。'\r'

于 2013-04-08T14:38:18.800 に答える