Java-比较字符串输入

Java-比较字符串输入,java,Java,这段代码似乎没有将输入与我想要的字符串(“yes”或“no”)进行比较。我是一名初学者,这只是我正在使用的基本代码。虽然返回字符串,但它不会提供与用户键入内容相关的任何信息: 返回此扫描仪的字符串表示形式。扫描仪的字符串表示形式包含可能对调试有用的信息。具体格式尚未确定 使用或,而不是扫描仪#toString() 注意,这是一个非常基本的问题,可以通过查阅JavaAPI文档(称为JavaDocs)轻松回答。在发布堆栈溢出之前,您应该始终查阅相关的JavaDocs。您的IDE可能有很好的内置Ja

这段代码似乎没有将输入与我想要的字符串(“yes”或“no”)进行比较。我是一名初学者,这只是我正在使用的基本代码。

虽然返回字符串,但它不会提供与用户键入内容相关的任何信息:

返回此
扫描仪的字符串表示形式。
扫描仪的字符串表示形式
包含可能对调试有用的信息。具体格式尚未确定

使用或,而不是
扫描仪#toString()



注意,这是一个非常基本的问题,可以通过查阅JavaAPI文档(称为JavaDocs)轻松回答。在发布堆栈溢出之前,您应该始终查阅相关的JavaDocs。您的IDE可能有很好的内置JavaDoc,但是您也可以在这里找到JavaSE JavaDoc:。

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

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

进一步资料

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

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");
        }
    }
}
等等。。。看


上述方法将帮助您继续输入文本,而无需对文本进行格式化,如将其解析为整数和全部。

因此,这里有几件事:

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

    Scanner.nextShort()
    Scanner.nextByte()
    Scanner.nextInt()
    
    因为它是一个布尔值,所以不必对该值进行比较,如果该值为true,则将变量设置为true。您可以显式地设置它

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


但是op在start变量中使用了
Scanner#next()
,我假设如果他在if(..)条件下从您的答案更改为start,这个程序可能会工作:)。但是现在这个值被丢弃了,因为您是初学者,我建议您尽快阅读“Head First Core Java”。
answer = "yes".equalsIgnoreCase(youranswer);