从用户输入中读取和检查字符串

时间:2011-12-28 21:32:34

标签: java string input user-input

我有这段代码:

import java.util.Scanner;

public class Example {
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    String answer = input.nextLine();

    if(answer == "yes"){
        System.out.println("Yea I programmed this right!");
    }else{
        System.out.println("Awww :(");
    }
  }
}

但是当我运行它并键入 yes 时,应该说

“是的,我编程正确!”

但它说

Awww :(

6 个答案:

答案 0 :(得分:9)

您正在错误地比较字符串。您必须使用equals()方法,如下所示:

if (answer.equals("yes"))

当您使用Java进行编程时,运算符==通常用于比较基本数据类型(intdouble等)。如果使用==比较两种对象类型(如字符串),则将它们与 identity 进行比较,即检查它们是否在内存中引用相同的对象。在你的情况下,你需要比较它们是否相等:如果它们具有完全相同的值(在这种情况下是一串字符),即使它们是两个不同的对象 - 并且您必须使用equals()方法。

编辑:

更好的是,为了阻止NullPointerException,这被认为是一种很好的做法,可以翻转比较的顺序并首先写下你要比较的字符串,如下所示:

if ("yes".equals(answer))

解释很简单:如果由于某种原因answernull,则上述比较将评估为false(意思是:answer不是"yes" ),而在尝试在NullPointerException值上调用equals()方法时,代码的第一个版本会导致null

答案 1 :(得分:2)

if(answer == "yes"){

应该是

if("yes".equals(answer)){

==String相等不正确,我们处理answer为空的情况

答案 2 :(得分:1)

使用String.equals()代替==

在Java中,==正在测试2个字符串是完全相同的实例,其中“a”!=“a”。相反,您需要测试"a".equals("a")

所以替换

if(answer == "yes"){

使用:

if("yes".equals(answer)){

请注意,在此处翻转顺序是有意的,因为如果answer为空,这可以防止NullPointerException - 因为"yes".equals(null)将只返回false,而不是抛出异常。 (在null上调用操作会抛出NullPointerException,I.E。null.equals("yes")。)

答案 3 :(得分:1)

更改此

if(answer.equals("yes")){
    System.out.println("Yea I programmed this right!");
}else{
    System.out.println("Awww :(");
}

equals()方法将字符串(示例中的答案)与指定对象进行比较。当且仅当参数不为null并且是一个表示与此对象相同的字符序列的String对象时,结果才为真。

了解equals()方法和==运算符执行两种不同的操作非常重要。如上所述,equals()方法比较String对象中的字符。 ==运算符比较两个对象引用以查看它们是否引用相同的实例。

答案 4 :(得分:0)

import java.util.Scanner;

public class Example { public static void main(String [] args){

Scanner input = new Scanner(System.in);
String answer = input.nextLine();

/*Edit your next line as mine,u'll get the correct ans...*/

if("yes".equals(answer)){ 
    System.out.println("Yea I programmed this right!");
}else{
    System.out.println("Awww :(");
}

} }

答案 5 :(得分:0)

或者您可以尝试使用" compareTo()"功能

private static Scanner input;
private static String choice;

public static void main(String[] args) {
    // TODO Auto-generated method stub

    input = new Scanner(System.in);
    choice = input.nextLine();

    if (choice.compareTo("yes") == 0) {
        System.out.println("Yea I programmed this right!");
    } else {
        System.out.println("Awww :(");
    }

}