3
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");
        }
    }
}

此代码似乎没有将输入与我想要的字符串(“是”或“否”)进行比较。我是初学者,这只是我正在玩的基本代码。

4

3 回答 3

5

虽然确实返回一个字符串,但它不会为您提供与用户输入的内容相关的任何内容:Scanner#toString()

返回 this 的字符串表示形式Scanner。a 的字符串表示形式Scanner包含可能对调试有用的信息。确切的格式未指定。

使用Scanner#next()Scanner#nextLine(),不使用Scanner#toString()


请注意,这是一个非常基本的问题,可以通过查阅称为 JavaDocs 的 Java API 文档轻松回答。在 Stack Overflow 上发帖之前,您应该始终查阅相关的 JavaDocs。您的 IDE 可能具有不错的内置 JavaDoc,但您也可以随时在此处找到 Java SE JavaDoc:http: //download.oracle.com/javase/7/docs/api

于 2013-04-14T15:55:49.253 回答
2

所以,你有一些事情发生在这里:

  • 您想使用Scanner.next()Scanner.nextLine()来检索最终用户的输入。
  • 您想摆脱if语句周围的静态代码块。
  • 您想将答案与任何情况进行比较 - 如果我输入“是”,它将失败。您可以将其更改为:

    answer = "yes".equalsIgnoreCase(youranswer);
    

    由于它是一个布尔值,因此您不必比较该值是否为真,将变量设置为真。您可以明确设置它。

  • 在最后一个块中,您不需要true在布尔值中进行比较。你可以简单地说if(answer)

于 2013-04-14T16:03:06.913 回答
0

您可以使用Scanner.next()方法或Scanner.nextLine().

该方法Scanner.toString()给出Scanner类的字符串表示。 Scanner.toString()实际上不会从控制台读取输入文本。

更多信息,

您可以使用 Scanner 类中可用的特定方法,例如

Scanner.nextShort()
Scanner.nextByte()
Scanner.nextInt()

等等...见扫描仪类

上述方法将帮助您继续输入文本,而无需格式化文本,例如将其解析为整数等。

于 2013-04-14T15:57:36.253 回答