我有这段代码:
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 :( ”
答案 0 :(得分:9)
您正在错误地比较字符串。您必须使用equals()
方法,如下所示:
if (answer.equals("yes"))
当您使用Java进行编程时,运算符==
通常用于比较基本数据类型(int
,double
等)。如果使用==
比较两种对象类型(如字符串),则将它们与 identity 进行比较,即检查它们是否在内存中引用相同的对象。在你的情况下,你需要比较它们是否相等:如果它们具有完全相同的值(在这种情况下是一串字符),即使它们是两个不同的对象 - 并且您必须使用equals()
方法。
编辑:
更好的是,为了阻止NullPointerException
,这被认为是一种很好的做法,可以翻转比较的顺序并首先写下你要比较的字符串,如下所示:
if ("yes".equals(answer))
解释很简单:如果由于某种原因answer
为null
,则上述比较将评估为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 :(");
}
}