JOptionPane showmessagedialog的初学者错误

问题描述 投票:0回答:4

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

java double joptionpane
4个回答
0
投票

将您的主要内容更改为:

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

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


0
投票

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

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

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

但还有其他问题:

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

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只是一个例外的问题。


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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.