我一直在使用Eclipse浏览YouTube for Java上的教程。
目前我正在尝试将两个双打相乘并使用JOptionPane.showMessageDialog
将结果输出为double,但它给了我一个错误。
这是我的代码:
import javax.swing.JOptionPane;
public class Variables {
public static void main(String arg[])
{
double length = 3;
double width = 2;
double area = length*width;
JOptionPane myIO = new JOptionPane();
myIO.showMessageDialog(null, area);
}
}
和错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method showMessageDialog(Component, Object) in the type JOptionPane
is not applicable for the arguments (null, double)
at Variables.main(Variables.java:11)
我正是在教程中看到的,所以我不知道我做错了什么。我觉得我没有导入某些库或我应该拥有的东西,但似乎Eclipse识别JOptionPane
和showMessageDialog
。
答案 0 :(得分:0)
将您的主要内容更改为:
public static void main(String arg[])
{
double length = 3;
double width = 2;
double area = length*width;
JOptionPane.showMessageDialog(null, area);
}
使用JOptionPane
时,我们不需要任何声明。
答案 1 :(得分:0)
尝试将double area
更改为Double area
。
double
是一个原语,因此不会继承Object
,这是showMessageDialog
期望的参数类型。
Double
是double
的包装类,并且作为所有对象,继承自Object
。
Java从Double
转换为double
通常没有问题,反之亦然,但是它采用Object
类型的参数可能意味着您实际上并不想要做你做的。
我会注意到这在NetBeans(Java 7)和IDEOne(Java 6)中有效(除了预期的运行时错误),所以Eclipse可能在这里错了,或者您使用的是旧版Java。说到Java,你应该总是运行最新的,除非你有特殊的理由不这样做。 Forward-compatibility只是个例外的问题。
答案 2 :(得分:0)
此代码存在许多问题,我建议您阅读official Java tutorials而不是您查看的代码。
首先,您甚至不应该尝试运行无法编译的代码。在Eclipse中打开 Problems 视图,如果此视图中列出了一个编译错误,甚至不要考虑运行代码。
然后阅读编译器错误消息并尝试理解它们以解决它们。 这里的问题是你可能正在使用一个非常非常旧的JDK版本(Java 5之前版本),它不会自动将原语(double)打包到它们的包装器类型(Double)中。下载最新版本的JDK,并配置eclipse以使用这个新版本。
但还有其他问题:
答案 3 :(得分:0)
将int类型转换为double区域,如下所示:
import javax.swing.JOptionPane;
public class Variables {
public static void main(String arg[])
{
double length = 3;
double width = 2;
double area = length*width;
JOptionPane myIO = new JOptionPane();
JOptionPane.showMessageDialog(null, (int)area);
}
}