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 に答える
他の答えは正しいです。ステートメント;
の最後にa がありif
ますが、見ることができます...
if(password==("N123U"));
^--- This is your problem...
これは、ステートメントが 1 行であっても、ステートメントを常に中かっこで囲むことをお勧めする理由の 1 つです...
if(password==("N123U")) {
JOptionPane.showMessageDialog(null,"Welcome");
} else {
JOptionPane.showMessageDialog(null,"Try again");
}
==
あなたが(しようとしている)もう1つの問題は、sを比較するために使用しているという事実ですString
。これは、オブジェクト参照を比較するだけであり、等しい可能性は低いです。String#equals
代わりに、たとえば...を使用する必要があります...
if("N123U".equals(password)) {...}
NullPointerException
これは、 sを回避するのにも役立ちます
if(password==("N123U"));
間違っていることが 2 つあります。あるべき
if("N123U".equals(password))
// don't compare strings with == and you have a semicolon, ending the statement
2 つのエラーがあると思います。Java で文字列を「==」と比較しようとしています。「while」部分で行うように、文字列には常に .equals を使用してください。「if」の部分はセミコロンで終了しています。そのコードを修正してみましょう。
import 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);
}
}
実際には、"then" ステートメントの周りにブロックを配置するだけで (たとえそれが 1 行であっても)、エラーはより明白になります (視覚的にはそうです)。
今後の参考のために: 単一の ; 空の(別名「何もしない」)ステートメントです。したがって、プログラムに実行するように指示するのは(疑似コード)です:
if (something)
<do nothing>
JOptionPane.doSomething()
else // <- syntax error here, we're not in an if anymore, so this is invalid
...
...