我需要在布尔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
,则不会产生正确的结果。对于其他输入,结果也不正确。
那么如何应对呢?
答案 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;
}
}
}