Col*_*ole 4 java string user-input 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 :(");
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行它并键入yes时,应该说
"是的,我把它编程好了!"
但它说
" Awww :( "
Ósc*_*pez 10
你错误地比较了字符串.你必须使用这个equals()方法,如下所示:
if (answer.equals("yes"))
Run Code Online (Sandbox Code Playgroud)
当你在Java编程中,操作者==一般用于比较原始数据类型(int,double,等).如果您==用于比较两个对象类型(如字符串),则将它们与标识进行比较,即检查它们是否在内存中引用相同的对象.在你的情况下,你需要的是比较它们是否相等:如果它们具有完全相同的值(在这种情况下是一串字符),即使它们是两个不同的对象 - 为此你必须使用该equals()方法.
编辑:
更好的是,为了防止a NullPointerException,它被认为是一种很好的做法,可以翻转比较的顺序并首先编写你要比较的字符串,如下所示:
if ("yes".equals(answer))
Run Code Online (Sandbox Code Playgroud)
原因很简单:如果由于某种原因answer是null,上面的比较将计算为false(意思是:answer是不是"yes"),而代码的第一个版本将导致NullPointerException试图调用时,equals()在方法null的价值.
| 归档时间: |
|
| 查看次数: |
48817 次 |
| 最近记录: |