Java - 比较字符串输入

时间:2013-04-14 15:54:14

标签: java

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

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

3 个答案:

答案 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)

所以,你有几件事情在这里:

  • 您想使用Scanner.next()Scanner.nextLine()来检索最终用户的输入。
  • 您希望摆脱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

上面的方法将帮助您继续输入文本而不形成文本,例如将其解析为整数和全部。