我只想问一下,如何比较两个字符。我这里有一个GUI程序,可以让你输入一个字符,并猜测你输入的字符是否与随机字母相同。
Random r = new Random();
char c = (char) (r.nextInt(26) + 'a');
String x = input.getText();
char y = x.charAt(0);
if (Character.compare(y, c) == 0) {
prompt.setText("Correct!");
prompt.setForeground(Color.GREEN);
}
else if (Character.compare(y, c) = 0) {
prompt.setText("Oops! Letter is lower");
prompt.setForeground(Color.RED);
}
else if (Character.compare(y, c) <= 0) {
prompt.setText("Oops! Letter is higher");
prompt.setForeground(Color.RED);
}
这是我上面的代码。但问题是,结果不匹配。例如,当随机字母为"j"时,即使我在文本字段中输入"j"。
它说,"哎呀!信更高"
我的问题出了什么问题?
谢谢!
这一行:
else if (Character.compare(y, c) = 0)
应该是:
else if (Character.compare(y, c) >= 0)
但是,由于您已经测试了== 0
案例,因此您可以执行以下操作:
else if (Character.compare(y, c) > 0)
首先,与您的问题无关:
char
只是一个整数。 您无需使用 Character.compare()
进行比较。 只需做
if (y == c) {
...
} else if (y > c) {
...
} else { // y < c
...
}
应该工作。
从您在其他答案的评论中描述的症状来看,我怀疑还有其他一些逻辑问题导致这种情况。 首先,每次都会生成随机值,当然连续调用会产生不同的值。 尝试输出随机字符和从输入中获得的字符,将它们放入输出消息中,看看它是否匹配。