所以我环顾四周并看到了一些类似的问题,但我仍然无法让我的计划工作。我只是在家练习(我在高中)不能解决这个问题并继续前进。这是我的代码,但我不确定我做错了什么。
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);
}
答案 0 :(得分:1)
表示第一种类型:java.lang.String,第二种类型:int。
showInputDialog(...)
方法返回String,而不是int。所以你不能只将值赋给int。您需要将String转换为int。类似的东西:
String value = JOptionPane.showInputDialog(...);
int age = Integer.parseInt(value);
答案 1 :(得分:0)
在您的代码中,您有两个错误:
如果您使用 IDE 而非 TextEditor 编写代码,则会检测到无法将inputAge
与OK_OPTION
进行比较,因为:
inputAge
字符串,OK_OPTION
是静态整数
第二个错误是if (inputAge == JOptionPane.OK_OPTION)
,假设您将inputAge的结果转换为Integer,如下所示: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 时才执行,我不完全知道您的观点,但我认为逻辑是:
我们使用JOptionPane.showInputDialog(参数)来询问用户 在我们对此值进行测试之后键入一个String。
在您的代码中,您对最终的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))));
}
}
}
使用此方法,您的代码可以获取输入并计算结果。