如何向 JOptionPane.showInputDialog 上的按钮发出命令
How to put a command to the buttons on JOptionPane.showInputDialog
所以我环顾四周,看到了一些类似的问题,但我仍然无法让我的程序运行。我只是在家练习(我在读高中)不能让这个问题悬而未决并继续前进。这是我的代码,但我不确定我做错了什么。
String inputAge, outputOK, outputCancel;
Integer Age;
inputAge = JOptionPane.showInputDialog("Enter Age To Find Your Year Of Birth", JOptionPane.OK_CANCEL_OPTION);
if (inputAge == JOptionPane.OK_OPTION){
System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));
} else if (inputAge == JOptionPane.CANCEL_OPTION){
System.exit(1);
}
that the first type: java.lang.String and the second type: int.
showInputDialog(...)
方法 returns 一个字符串,而不是一个整数。所以你不能只把值赋给一个int。您需要将 String 转换为 int。类似于:
String value = JOptionPane.showInputDialog(...);
int age = Integer.parseInt(value);
在您的代码中有两个错误:
如果您使用 IDE 而不是 TextEditor 编写代码,它会检测到无法比较 inputAge
到 OK_OPTION
因为:
inputAge
是 String 而 OK_OPTION
是 static Integer
第二个错误是 if (inputAge == JOptionPane.OK_OPTION)
,假设您将 inputAge 的结果转换为整数,如下所示:Integer.valueOf(inputAge)
我们得到的结果是:
if (Integer.ValueOf(inputAge) == JOptionPane.OK_OPTION)
但如果你在 JOptionPane class
中探索,你会发现 JOptionPane.OK_OPTION
是:public static final int OK_OPTION = 0;
这意味着这部分代码:
if (inputAge == JOptionPane.OK_OPTION){
System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));
}
仅当用户写入 0 时才执行,我不完全明白你的意思,但我认为逻辑是:
We use JOptionPane.showInputDialog(parameters) for asking the user to
type a String after that we make our testing on this value.
在您的代码中,您对最终 static 变量进行了测试,所以我猜您的代码将是这样的:
inputAge = JOptionPane.showInputDialog("Enter Age To Find Your Year Of Birth", JOptionPane.OK_CANCEL_OPTION);
if (inputAge != null) {
if (!inputAge.isEmpty()) {
if (Integer.valueOf(inputAge) != 0) {
System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));
}
}
}
使用此方法,您的代码可以获取输入并计算结果。
所以我环顾四周,看到了一些类似的问题,但我仍然无法让我的程序运行。我只是在家练习(我在读高中)不能让这个问题悬而未决并继续前进。这是我的代码,但我不确定我做错了什么。
String inputAge, outputOK, outputCancel;
Integer Age;
inputAge = JOptionPane.showInputDialog("Enter Age To Find Your Year Of Birth", JOptionPane.OK_CANCEL_OPTION);
if (inputAge == JOptionPane.OK_OPTION){
System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));
} else if (inputAge == JOptionPane.CANCEL_OPTION){
System.exit(1);
}
that the first type: java.lang.String and the second type: int.
showInputDialog(...)
方法 returns 一个字符串,而不是一个整数。所以你不能只把值赋给一个int。您需要将 String 转换为 int。类似于:
String value = JOptionPane.showInputDialog(...);
int age = Integer.parseInt(value);
在您的代码中有两个错误:
如果您使用 IDE 而不是 TextEditor 编写代码,它会检测到无法比较 inputAge
到 OK_OPTION
因为:
inputAge
是 String 而 OK_OPTION
是 static Integer
第二个错误是 if (inputAge == JOptionPane.OK_OPTION)
,假设您将 inputAge 的结果转换为整数,如下所示:Integer.valueOf(inputAge)
我们得到的结果是:
if (Integer.ValueOf(inputAge) == JOptionPane.OK_OPTION)
但如果你在 JOptionPane class
中探索,你会发现 JOptionPane.OK_OPTION
是:public static final int OK_OPTION = 0;
这意味着这部分代码:
if (inputAge == JOptionPane.OK_OPTION){
System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));
}
仅当用户写入 0 时才执行,我不完全明白你的意思,但我认为逻辑是:
We use JOptionPane.showInputDialog(parameters) for asking the user to type a String after that we make our testing on this value.
在您的代码中,您对最终 static 变量进行了测试,所以我猜您的代码将是这样的:
inputAge = JOptionPane.showInputDialog("Enter Age To Find Your Year Of Birth", JOptionPane.OK_CANCEL_OPTION);
if (inputAge != null) {
if (!inputAge.isEmpty()) {
if (Integer.valueOf(inputAge) != 0) {
System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));
}
}
}
使用此方法,您的代码可以获取输入并计算结果。