-6
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);
  }

}
4

6 回答 6

3

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

于 2013-11-02T00:51:08.460 回答
2

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

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

这就是为什么建议始终在语句周围使用大括号的原因之一,即使它们是单行......

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

您(将要)遇到的另一个问题是您正在使用==来比较Strings,这只是比较对象引用,这不太可能相等。相反,您应该使用String#equals,例如...

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

这也将帮助您NullPointerException避免

于 2013-11-02T00:55:45.293 回答
1

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

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

应该

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

原则上,当每个ifandelse都是单个语句时,您可以省略花括号,但这通常会在您未来的某个时候自找麻烦......

于 2013-11-02T00:50:32.033 回答
0
  if(password==("N123U"));

有两件事不对。应该是

  if("N123U".equals(password))

  // don't compare strings with == and you have a semicolon, ending the statement
于 2013-11-02T00:53:46.587 回答
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);
  }

}
于 2013-11-02T00:56:25.690 回答
0

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

供将来参考:单个;是一个空的(又名“什么都不做”)语句。所以你告诉你的程序要做的是(伪代码):

if (something)
    <do nothing>
JOptionPane.doSomething()
else // <- syntax error here, we're not in an if anymore, so this is invalid
    ...
...
于 2013-11-02T00:56:30.743 回答