繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM