// ask user to enter name of state capital
String answer = JOptionPane.showInputDialog("What is the capital of " +
question + "?");
// verify name of state capital is in citiesarray
boolean isPresent = false; int stateNum = 0;
System.out.println(answer); // troubleshooting line
for (int i = 0; i <= 49; i++) {
String city = citiesarray[i];
isPresent = answer.equalsIgnoreCase(city);
System.out.println(city); // troubleshooting line
System.out.println(answer.compareTo(city)); // troubleshooting line
System.out.println(isPresent); // troubleshooting line
if (isPresent == true) {
stateNum = i; break;
}
}
if (isPresent == false) {
JOptionPane.showMessageDialog(null, "That is incorrect. Please try another round.");
return;
}
このコードを実行するたびに、入力した大文字とは無関係にループの繰り返しごとにすべての不正ブール値が返されます。 equalsIgnoreCase
が常に-1となる都市を出力する場合はcompareTo
のように見えますが、それを識別して問題を解決する方法はわかりません。equalsIgnoreCaseメソッドがJOptionPane(またはScanner)入力で機能しない
私はいくつかのことを試してみましたが、スキャナでは答えにスペースが含まれていない限り動作するように見えましたが、それはJOptionPane
とは関係なく、これは、国の首都が何であるかに関係なく機能します。
'citiesarray'の値は何ですか?また、私はSOP行を 'System.out.println(" '"+ city +"' ");'のように変更して、間違ったスペースをチェックします。 –
まず、あなたが答えを検証する方法は間違っています。あなたが 'citiesarray'で持っている値は何ですか?InputDialogに入力した値は何ですか? – Jobin
citiesarrayの値は、* .txtファイルから読み込まれた50の州都です。 SOP行を変更すると、わからない理由のために、2番目のアポストロフィだけが出力されます。 欠けている配列の値にエスケープ文字がありますか?それは事ですか? – Lucky