2013-10-01 52 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 
    ... 
} 

應該工作。

從你在其他答案的評論中描述的症狀中,我懷疑還有其他一些邏輯問題引起的。首先,每次產生隨機數,當然連續調用會產生不同的值。嘗試輸出隨機字符和從輸入中獲得的字符,將它們放在輸出消息中,並查看它是否匹配。