JOptionPane showmessagedialog的初学者错误

时间:2013-06-01 00:16:14

标签: java double joptionpane

我一直在使用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识别JOptionPaneshowMessageDialog

4 个答案:

答案 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期望的参数类型。

Doubledouble的包装类,并且作为所有对象,继承自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以使用这个新版本。

但还有其他问题:

  • 您不应该创建新的JOptionPane来调用静态方法showMessageDialog()。只需使用JOptionPane.showMessageDialog()。
  • 你不应该在事件派发线程之外使用Swing。鉴于你是一个新手,根本不要使用Swing,只有yse System.out.println()调用现在在屏幕上打印值。

答案 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);
    }
}