[英]How to use System.in.read() in java?
我需要在布尔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
,它不会产生正确的结果。 对于其他输入,结果也不正确。
那么如何应对呢?
如果第一个字符不是'.'
,则在循环中第二次读取字符'.'
。
你应该只读每个循环一个字符。 在if
语句之前将字符保存在变量中,然后将变量与'.'
进行比较'.'
和'X'
反过来。
您不应该在每个if
语句中调用read()
函数。 将其调用一次并将其存储在变量中,这样您就不会继续读取输入。 这可能是搞乱你的功能的一件事。 另一个是你如何比较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;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.