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);
}
}
答案 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
}
原则上,当if
和else
中的每一个都是单个陈述时,你可以省略花括号,但这通常会在将来的某个时候遇到麻烦......
答案 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
...
...