如何在java中使用System.in.read()?

时间:2014-03-25 19:47:32

标签: java arrays inputstream

我需要在布尔2-D数组中输入和加载一些字符。如果char为X,则将数组元素标记为true;否则,如果char为.,则将数组元素标记为false。

这是我的设计:

boolean[][] Array = new boolean[2][2];

for (int i = 0; i < 2; i++) {  
   for (int j = 0; j < 2; j++) {
        if (System.in.read() == '.') {
            Array[i][j] = false;
        } else if (System.in.read() == 'X') {
            Array[i][j] = true;
        }
    }
}

例如,如果我输入....XXXX,则不会产生正确的结果。对于其他输入,结果也不正确。

那么如何应对呢?

2 个答案:

答案 0 :(得分:1)

如果第一个字符不是'.',您将在循环中第二次读取字符。

每个循环只能读一个字符。在if语句之前将字符保存在变量中,然后依次将变量与'.''X'进行比较。

答案 1 :(得分:1)

您不应该在每个read()语句中调用if函数。将其调用一次并将其存储在变量中,这样您就不会继续阅读输入。这可能是搞乱你的功能的一件事。另一个是您如何将char==运算符进行比较。应该使用char.equals方法进行字符比较。放入几个断点并查看要通过调试发送的值。也许尝试以下内容:

boolean[][] Array= new boolean[2][2];

for (int i = 0; i < 2; i++) {  
  for (int j = 0; j < 2; j++) {
        Character input = (char)System.in.read();
        if (input.equals('.')) {
            Array[i][j] = false;
        } else if (input.equals('X')) {
            Array[i][j] = true;
        }
    }
}