0

我一直在关注 YouTube for Java 上使用 Eclipse 的教程。

目前我正在尝试将两个双打相乘并将结果作为双打输出,JOptionPane.showMessageDialog但它给了我一个错误。

这是我的代码:

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

4 回答 4

0

尝试更改double areaDouble area.

double是一个原语,因此不会继承Object,这是参数类型所showMessageDialog期望的。

Double是一个包装类,double并且与所有对象一样,继承自Object.

Java 通常没有问题Doubledouble反之亦然,但它接受类型参数的事实Object可能意味着您实际上并不想做您所做的事情。

我会注意到这在 NetBeans (Java 7) 和IDEOne (Java 6) 中有效(除了预期的运行时错误),所以可能 Eclipse 在这里出错了,或者您使用的是旧版本的 Java。对于 Java,您应该始终运行最新版本,除非您有特定的理由不这样做。前向兼容性只是一个例外问题。

于 2013-06-02T15:49:56.180 回答
0

这段代码有很多问题,我建议阅读官方 Java 教程而不是你看过的那个。

首先,您甚至不应该尝试运行无法编译的代码。在 Eclipse 中打开Problems视图,如果此视图中列出了一个编译错误,甚至不要考虑运行您的代码。

然后阅读编译器错误消息并尝试理解它们以修复它们。这里的问题是,您可能正在使用非常非常旧的 JDK 版本(Java 5 之前),它不会自动将原语(双)装箱到它们的包装器类型(双)中。下载最新版本的 JDK,并配置 eclipse 以使用这个新版本。

但还有其他问题:

  • 您不应创建新的 JOptionPane 来调用静态方法 showMessageDialog()。只需使用 JOptionPane.showMessageDialog()。
  • 您不应该在事件调度线程之外使用 Swing。鉴于您是新手,根本不要使用 Swing,现在只调用 yse System.out.println() 来在屏幕上打印值。
于 2013-06-02T15:51:25.127 回答
0

将您的主要内容更改为:

 public static void main(String arg[])
      {
        double length = 3;
        double width = 2;
        double area = length*width;
        JOptionPane.showMessageDialog(null, area);
      }

使用时JOptionPane我们不需要任何声明。

于 2013-06-02T15:46:36.933 回答
-1

将 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);
    }
}
于 2014-03-04T02:24:34.403 回答