-1

我只想问,如何比较两个字符。我这里有一个 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”。

它说,“哎呀!这封信更高了”

我的问题有什么问题?

谢谢!

4

2 回答 2

0

这一行:

else if (Character.compare(y, c) = 0)

应该:

else if (Character.compare(y, c) >= 0)

但是,由于您已经测试了== 0案例,您可以这样做:

else if (Character.compare(y, c) > 0)
于 2013-10-01T23:45:18.290 回答
0

首先,与您的问题无关的事情:

char只是一个整数。你不需要Character.compare()用来做比较。简单地做

if (y == c) {
  ...
} else if (y > c) {
  ...
} else {  // y < c
  ...
}

应该管用。

从您在其他答案的评论中描述的症状来看,我怀疑还有其他一些逻辑问题导致了这种情况。首先,每次都会产生随机数,当然连续调用会产生不同的值。尝试输出随机字符和从输入中获得的字符,将它们放入输出消息中,看看是否匹配。

于 2013-10-02T02:40:12.950 回答