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

输出:
1 个字符:
u
2 个字符:
3 个字符:
您输入:
u

我希望它会阻止用户输入值三次。任何意见 ?



谢谢,
莫希特

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 键。第二次读取返回 Enter。

于 2012-07-01T04:07:55.977 回答
1

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

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

于 2012-07-01T04:11:49.813 回答