import java.util.Scanner;
public class TrueFalseQuiz {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
String youranswer;
boolean answer = false;
System.out.print("The queens name is Elizabeth? yes or no ");
youranswer = myScanner.toString();
String start = myScanner.next();
{
if (youranswer.equals("yes")) {
answer = true;
}
}
if (answer == true) {
System.out.println("Answer is correct");
} else {
System.out.println("Answer is wrong");
}
}
}
此代码似乎没有将输入与我想要的字符串(“是”或“否”)进行比较。我是初学者,这只是我正在玩的基本代码。
答案 0 :(得分:5)
虽然Scanner#toString()
会返回一个字符串,但它不会提供与用户输入内容相关的任何信息:
返回此
Scanner
的字符串表示形式。Scanner
的字符串表示包含可能对调试有用的信息。具体格式未指定。
使用Scanner#next()
或Scanner#nextLine()
,而不是Scanner#toString()
。
请注意,这是一个非常基本的问题,可以通过查阅称为JavaDocs的Java API文档轻松解决。在Stack Overflow上发布之前,您应该始终查阅相关的JavaDocs。您的IDE可能有很好的内置JavaDoc,但您也可以在这里找到Java SE JavaDocs:http://download.oracle.com/javase/7/docs/api。
答案 1 :(得分:2)
所以,你有几件事情在这里:
if
语句周围的静态代码块。您希望将答案与任何案例进行比较 - 如果我输入“是”,则会失败。您可以将其更改为:
answer = "yes".equalsIgnoreCase(youranswer);
由于它是布尔值,因此如果该值为true,则不必进行比较,将变量设置为true。您可以明确设置它。
在最后一个块中,您不需要在布尔值中与true
进行比较。您可以简单地说if(answer)
。
答案 2 :(得分:0)
您可以使用Scanner.next()
方法或Scanner.nextLine()
。
方法Scanner.toString()
给出Scanner
类的字符串表示。
Scanner.toString()
实际上没有从控制台读取输入文本。
更多信息,
您可以使用Scanner类中提供的特定方法,例如
Scanner.nextShort()
Scanner.nextByte()
Scanner.nextInt()
等等......请参阅Scanner class
上面的方法将帮助您继续输入文本而不形成文本,例如将其解析为整数和全部。