2013-06-01 77 views
0

我一直在使用Eclipse關注YouTube上的Java教程。JOptionPane的初學者錯誤showmessagedialog

目前我試圖乘以兩個雙打,並輸出結果作爲一個使用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

+0

**公共靜態無效showMessageDialog(成分爲父級,對象消息)**期望一個組件和一個對象。你正在傳遞一個double,你可能希望Double對象而不是原來的兩倍。 – Maroun

回答

0

更改主這樣:

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

當使用JOptionPane我們不需要任何聲明。

0

嘗試將double area更改爲Double area

double是一個原始的,因此不會繼承Object,這是showMessageDialog期望的參數類型。

Doubledouble的包裝類,因爲所有對象都從Object繼承。

Java通常沒有問題,從Double轉換爲double,反之亦然,但事實上它需要類型爲Object的參數可能意味着你實際上並不想做你所做的事情。

我會注意到,這個作品在NetBeans(Java 7中)和IDEOne(Java 6中)(除預期運行錯誤),所以也許E​​clipse是在錯誤的位置,或者您使用的是舊Java版本。談到Java時,你應該始終運行最新的,除非你有特定的理由不這樣做。 Forward-compatibility只是一個例外的問題。

0

該代碼有很多問題,我建議您閱讀official Java tutorials而不是您看過的代碼。

首先,你甚至不應該嘗試運行不能編譯的代碼。在Eclipse中打開問題視圖,如果在此視圖中列出了一個編譯錯誤,則甚至不要考慮運行代碼。

然後閱讀編譯器錯誤消息,並嘗試理解它們以解決它們。 這裏的問題是,您可能使用的是非常非常舊的JDK版本(Java 5之前的版本),它不會自動將原語(double)包裝到其包裝類型(Double)中。下載最新版本的JDK,並配置eclipse以使用這個新版本。

但也有其他的問題:

  • 你不應該創建一個新的JOptionPane調用靜態方法showMessageDialog()。只需使用JOptionPane.showMessageDialog()。
  • 你不應該在事件派發線程之外使用Swing。鑑於你是一個新手,根本不要使用Swing,並且只能調用System.out.println()調用來在屏幕上打印值。
0

角色的int型的區域的兩倍,像這樣:

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