我正在尝试编译的代码:
import javax.swing.JOptionPane;
public class Comienzo
{
public static void main()
{
String nombrepersonaje = JOptionPane.showInputDialog("Introduce el nombre de tu personaje");
if (JOptionPane.OK_CANCEL_OPTION == JOptionPane.CANCEL_OPTION)
Principal.main(new String[] {});
else
//do other stuff
if (nombrepersonaje.equals(""))
Comienzo.main();
else
JOptionPane.showMessageDialog(null, "¡Bienvenido... " + nombrepersonaje + "!");
}
}
这个类和方法是从另一个类调用的(我在本网站上学到的东西),现在我想问为什么Eclipse告诉我我正在比较相同的表达式,我想要做的是:if我按下取消按钮,返回Principal#main
课程,我也尝试了
if (JOptionPane.OK_CANCEL_OPTION == JOptionPane.CANCEL_OPTION)
{
Comienzo.main();
}
但即使我在InputDialog中输入内容,循环程序,我得到的东西似乎是在我写完之后的任何东西都是“死代码”,我不明白为什么。
我甚至试图删除else
之后的括号并放入
else if {nombrepersonaje.equals(""))
Comienzo.main();
else
JOptionPane.showMessageDialog(null, "¡Bienvenido... " + nombrepersonaje + "!");
有什么想法吗?
答案 0 :(得分:1)
您必须将方法showInputDialog
的返回值(在本例中为String
)与null
进行比较(showInputDialog
返回null
,如果单击Cancel
按钮):
public class Class
{
public static void main(String[] args)
{
String result = JOptionPane.showInputDialog(null, "Are you serious?");
if(result == null)
System.out.println("YOU ARE DEFINETELY SERIOUS!");
}
}
答案 1 :(得分:0)
你可能想要的是这样的:
import javax.swing.JOptionPane;
public class Comienzo {
public static void main(String[] args) {
String inputValue = JOptionPane.showInputDialog("Please input a value");
if (inputValue == null) {
System.out.println("CANCEL");
} else if (inputValue.equals("")) {
Comienzo.main(args);
} else {
JOptionPane.showMessageDialog(null, "¡Bienvenido... " + inputValue + "!");
}
}
}
你在JOptionPane.OK_CANCEL_OPTION == JOptionPane.CANCEL_OPTION所做的是将两个常量相互比较,恰好具有相同的值。由于常量不能根据您的输入进行更改,因此您的代码无法对输入做出反应。