我的Java程序无效! 这是我的代码:
import javax.swing.JOptionPane;
public class practice
{
public static void main(String[] args)
{
String userName = "Eddie"; //username is Eddie
String passWord = "hI"; // passsword is hI
String name;
name = JOptionPane.showInputDialog("Whats your username? ");
if (name == userName)
JOptionPane.showMessageDialog(null, "Exepted!");
System.exit(0);
}
}
它应该要求我的用户名,如果我输入“Eddie”,它必须显示消息对话框“Accepted”。但是在我输入“Eddie”后,程序关闭了! 有什么建议吗?
答案 0 :(得分:0)
if (name == userName)
应更改为if (name.equals(userName))
equals()和" ==" Java中的运算符用于比较对象以检查相等性,但equals方法和==运算符之间的主要区别在于前者是方法,后来是运算符。
在此处阅读更多内容以确定差异:http://javarevisited.blogspot.com/2012/12/difference-between-equals-method-and-equality-operator-java.html#ixzz44dFcXkwr
答案 1 :(得分:0)
也需要if (name.equals(userName))
,我相信你的话已经过了#34;需要接受
答案 2 :(得分:0)
应该注意==
比较两个引用是否指向同一个对象,而equals()
方法(String
)检查两个对象是否具有相同的值。这是什么意思?真正不同的是什么?
当您使用==
来比较字符串时,它会检查您比较的两个字符串是否指向内存中的完全相同的位置。请注意,我可以String a = "abc"
和String b = "abc"
,但a
和b
不会引用相同的内存(它们可能代表两个不同的内存位置,以及那些内存这两个地点都碰巧拥有相同的价值," abc")。这正是您的示例中发生的事情,除了您的字符串的值是" Eddie"。另一方面,equals()
比较任意两个字符串,看它们是否具有相同的字符。
Crummy比喻:
图像JVM是服务员。假设你看到你的朋友鲍勃用培根芝士汉堡和香脆的洋葱,它看起来很开胃。进一步假设您想询问JVM是否可以拥有Bob所具有的功能。如果你使用==
,JVM会从鼻子底下掏出鲍勃正在吃的汉堡,然后递给你那个汉堡。那个确切的汉堡。如果您使用equals()
,JVM将为您提供另一个带有来自厨房的香脆洋葱的培根芝士汉堡。您几乎总是希望equals()
使用字符串比较。不要偷鲍勃的汉堡!!!