2017-09-20 6 views
-2

このプログラムの出力は、常に間違った答えになります。私は、ユーザー入力をgetAnswer()メソッドとどのように比較できるのか不思議でした。私はJavaでかなり新しいです。どんな一般的なヒントも素晴らしいだろう。シンプルなトリビアゲームの比較

トリビアクラス

import java.util.Scanner; 

public class Trivia 
{ 
private String question; 
private String answer; 

public void setQuestion(String question) 
{ 
this.question = question; 
} 
public void setAnswer(String answer) 
{ 
this.answer = answer; 
} 
public String getQuestion() 
{ 
return question; 
} 
public String getAnswer() 
{ 
return answer; 
} 
} 

メインクラス

import java.util.Scanner; 

public class TriviaTest extends Trivia 
{ 
public static void main(String[]args) 
{ 
Scanner keyboard = new Scanner(System.in); 

TriviaTest t1 = new TriviaTest(); 
TriviaTest t2 = new TriviaTest(); 
t1.setQuestion("What is the longest river? "); 
t1.setAnswer("The Amazon River"); 
t2.setQuestion("What is the capital of Spain?"); 
t2.setAnswer("Madrid"); 
System.out.println(t1.getQuestion()); 

String a = keyboard.next().toLowerCase(); 
String b = t1.getAnswer(); 
if(b.equals(a)) 
{ 
    System.out.println(" Yes! Correct! "); 
} 

else 
{ 
    System.out.println(" BZZZZZZ! Wrong answer!"); 
} 
} 
} 
+0

「a」の値をデバッグするSystem.out.println(a);「 –

+0

」特定の質問をし、問題を明確に定義してください。 – pucky124

答えて

3

あなたの実際の答えは、大文字と小文字を持っていますが、比較対照値はすべて小文字に変換されています。 keyboard.next().toLowerCase()

大文字と小文字を区別しない比較は、このようなトリビアゲームに本当に必要なものです。格納されている回答を小文字に変換するか、大文字と小文字の混在した回答を保存して、大文字と小文字を区別しないで比較します(String.equalsIgnoreCase())。

注1:基本的なデバッグのステップ1:System.out.println("a=" + a + ", ans=" + t1.getAnswer());がこれを解決しました。

注2:この重要なロジックをmainに貼り付けるのではなく、クラスにboolean checkAnswer(String answer)を追加するとよいでしょう。