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);
}
}
问问题
2727 次
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");
}
您(将要)遇到的另一个问题是您正在使用==
来比较String
s,这只是比较对象引用,这不太可能相等。相反,您应该使用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
}
原则上,当每个if
andelse
都是单个语句时,您可以省略花括号,但这通常会在您未来的某个时候自找麻烦......
于 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 回答