2013-10-01 27 views
-1

我只想问一下,如何比较两个字符。 我在这里有一个GUI程序,可以让你输入一个字符,并猜测你输入的是否与随机字母相同。比较2个字符的值

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”。

它说的,“哎呀!这封信较高的”

这有什么错我的问题?

谢谢!

+0

这是什么语言?从我所看到的,我假设它是Java? –

+0

是的,java.Sorry为不完整的信息。 –

+1

即使是相同的代码? if块中的'= 0'是可疑的。 –

回答

0

这条线:

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

应该是:

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

但是,因为你已经测试了== 0情况下,你可以这样做:

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

实际上应该是'> 0','=='的情况已经过测试。 – EJP

+0

为什么人们低调?坏问题?这是一个完全有效的问题。 –

+0

@EJP如果它已经过测试,它不会有所作为。 –

0

首先,东西这与你的问题无关:

char只是一个整数。您不需要使用Character.compare()来进行比较。只要做

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

应该工作。

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