System.in.read()不阻止读取更多输入字符?

时间:2012-07-01 04:06:01

标签: java


任何人都可以解释为什么下面的代码表现得很奇怪:

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]);
        }
    }
}

输出:
1个字符:
ü
2个字符:
3个字符:
你输入了:
ü

我希望它能阻止三次让用户输入值。 有什么意见吗?



谢谢,
莫希特

3 个答案:

答案 0 :(得分: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]);
        }
    }

答案 1 :(得分:1)

您输入了一个字符,然后按Enter键。第二次读取返回Enter。

答案 2 :(得分:1)

输入单个字符的正确方法是使用GUI,例如Swing GUI。您无法使用标准Java控制台输入单个字符。

您可以使用非标准控制台,例如JCurses,但不能使用标准Java控制台。