为什么我的''别人'不起作用?

时间:2013-11-02 00:46:59

标签: java if-statement

import javax.swing.*;


public class Password {
  public static void main(String [] args)
  {
    String password;
    do
    {
      password=JOptionPane.showInputDialog("Password, Please");

      if(password==("N123U"));


      JOptionPane.showMessageDialog(null,"Welcome");

      else
      JOptionPane.showMessageDialog(null,"Try again");

    }while(password.equals("N123U")==false);
  }

}

6 个答案:

答案 0 :(得分:3)

您的if声明末尾有一个分号。结束if语句。如果语句不应该有分号,请将其删除。

答案 1 :(得分:2)

其他答案是正确的,您在;声明的末尾有一个if,但您可以看到...

 if(password==("N123U"));
                        ^--- This is your problem...

这就是为什么建议总是在你的陈述中使用大括号的原因之一,即使它们只是一行......

 if(password==("N123U")) {
     JOptionPane.showMessageDialog(null,"Welcome");
 } else {
     JOptionPane.showMessageDialog(null,"Try again");
 }

你要去的另一个问题是你使用==来比较String s,这只是比较对象引用,它不太可能相等。相反,您应该使用String#equals,例如......

if("N123U".equals(password)) {...}

这也可以帮助您避免NullPointerException

答案 2 :(得分:1)

if表示语句结束后的分号:下一行不被视为if子句的一部分。删除分号以获得正确的流量。换句话说,

if(password==("N123U"));

应该是

if(password==("N123U")) {
  // do something
}
else {
  // do something else
}

原则上,当ifelse中的每一个都是单个陈述时,你可以省略花括号,但这通常会在将来的某个时候遇到麻烦......

答案 3 :(得分:0)

  if(password==("N123U"));

有两件事是错的。应该是

  if("N123U".equals(password))

  // don't compare strings with == and you have a semicolon, ending the statement

答案 4 :(得分:0)

我想,有两个错误:你试图在Java中将字符串与“==”进行比较 - 总是使用字符串的.equals,就像你在“while”部分一样。 “if”部分由分号终止 - 让我尝试纠正该代码:

导入javax.swing。*;

public class Password {
  public static void main(String [] args)
  {
    String password;
    do
    {
      password=JOptionPane.showInputDialog("Password, Please");

      if(password.equals("N123U")) {


      JOptionPane.showMessageDialog(null,"Welcome");

      } else {
          JOptionPane.showMessageDialog(null,"Try again");
      }

    }while(password.equals("N123U")==false);
  }

}

答案 5 :(得分:0)

实际上,如果您只是在“then”语句周围放置一个块(即使它只是那一行),错误会更明显(在视觉上)。

供将来参考:单一;是一个空的(又名“无所事事”)陈述。所以你告诉你的程序要做的是(伪代码):

if (something)
    <do nothing>
JOptionPane.doSomething()
else // <- syntax error here, we're not in an if anymore, so this is invalid
    ...
...