Java程序验证用户名的问题

时间:2016-04-02 02:16:21

标签: java

我的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”后,程序关闭了! 有什么建议吗?

3 个答案:

答案 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",但ab不会引用相同的内存(它们可能代表两个不同的内存位置,以及那些内存这两个地点都碰巧拥有相同的价值," abc")。这正是您的示例中发生的事情,除了您的字符串的值是" Eddie"。另一方面,equals()比较任意两个字符串,看它们是否具有相同的字符。

Crummy比喻:

图像JVM是服务员。假设你看到你的朋友鲍勃用培根芝士汉堡和香脆的洋葱,它看起来很开胃。进一步假设您想询问JVM是否可以拥有Bob所具有的功能。如果你使用==,JVM会从鼻子底下掏出鲍勃正在吃的汉堡,然后递给你那个汉堡。那个确切的汉堡。如果您使用equals(),JVM将为您提供另一个带有来自厨房的香脆洋葱的培根芝士汉堡。您几乎总是希望equals()使用字符串比较。不要偷鲍勃的汉堡!!!