0


次のコードが奇妙な動作をする理由を誰か説明してください:

public class UserInputTest {
    public static void main(String[] args) throws IOException {
        int n=3;
        char[] arr = new char[n];
        for (int i=0; i<n; i++) {
          System.out.println(i+1 + " character :");
          arr[i] = ((char)System.in.read());
        }

        System.out.println("You Entered : ");
        for (int i=0; i<n; i++) {
         System.out.println(arr[i]);
        }
    }
}

OUTPUT:
1 文字 :
u
2 文字 :
3 文字 :
入力した文字 :
u

ユーザーが値を入力するために 3 回ブロックすることを期待していました。コメントはありますか?



ありがとう、
モヒット

4

3 に答える 3

3

コンソールから文字を読み取るには、上記の入力の問題があります。したがって、文字列として読み取ってみてください。

public static void main(String args[]){


        int n=3;
        char[] arr = new char[n];
        Scanner in = new Scanner(System.in);
        for (int i=0; i<n; i++) {
          System.out.println(i+1 + " character :");
          String s1 = in.nextLine();
          arr[i] = s1.charAt(0);
        }

        System.out.println("You Entered : ");
        for (int i=0; i<n; i++) {
         System.out.println(arr[i]);
        }
    }
于 2012-07-01T04:31:48.447 に答える
1

文字を入力してから Enter キーを押しました。2 番目の読み取りでは、Enter が返されます。

于 2012-07-01T04:07:55.977 に答える
1

個々の文字を入力する正しい方法は、Swing GUI などの GUI を使用することです。標準の Java コンソールでは、個々の文字を入力することはできません。

これには JCurses などの非標準コンソールを使用できますが、標準の Java コンソールは使用できません。

于 2012-07-01T04:11:49.813 に答える