该程序的输出总是错误的答案。我想知道如何将用户输入与getAnswer()方法进行比较。我是Java的新手。任何一般提示都会很棒。
Trivia Class
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 :(得分:3)
您的实际答案有大写和小写字母,但您比较的值已转换为全部小写。 keyboard.next().toLowerCase()
。
不区分大小写的比较是你真正想要的琐事游戏。也可以将存储的答案转换为小写,或者存储混合大小写的答案,并对用户输入进行不区分大小写的比较(String.equalsIgnoreCase()
)。
注1:基本调试的第1步:System.out.println("a=" + a + ", ans=" + t1.getAnswer());
可以解决这个问题。
注意2:更好的解决方案是将boolean checkAnswer(String answer)
添加到Trivia
类,而不是将这个重要逻辑添加到main
中。