2014-12-05 38 views
-2

我對Java相當陌生,花了幾個小時試圖弄清楚這個作業問題,但我還沒弄明白。這就是:
爲重載的一個參數的靜態方法money完成以下定義,該方法返回一個表示其參數的字符串作爲金額。例如,Java中的重載方法(EMACS)

如果輸入是雙精度型2.5,則返回字符串「$ 2.50」;

如果輸入是int 6,則返回字符串「$ 6.00」;和

如果輸入是字符串「6.125」,則返回字符串「$ 6.13」。

我的課程使用EIMACS,大多數學生都鄙視它,它允許在編碼時使用一些簡單的快捷方式,但通常比有益更有害。到目前爲止,我已經得到了這個:

public static String money(int n) 
{ 
    double a = Integer.parseInt(n); 
    return money(n); 
} 

public static String money(double d) 
{ 
    double b = Double.parseDouble(d); 
    return money(d); 
} 

public static String money(String s) 
{ 
    return money(s); 
} 

public static void main(String[] args) 
{ 
    System.out.println(money(2.5)); 
} 

有人能幫我找出我做錯了什麼嗎?謝謝!

+0

那麼你的問題是什麼? (雖然有一個明顯的問題,但我不會說,你有責任清楚地問問題) – 2014-12-05 01:35:55

+0

所有的方法都在調用它們自己,因此創建了一個無限循環 - 重新思考你想要這些方法返回的內容。 – 2014-12-05 01:36:04

+0

爲什麼你仍然需要解析一個已經是double的double值?與Int相同。當你編譯程序時,錯誤信息應該是自我解釋。 – 2014-12-05 01:38:31

回答

1

如果這是你的代碼的全部,那麼問題是語法是錯誤的。方法需要在類中聲明。檢查您的教科書或講義,或查看Oracle Java教程。

如果這些只是片段,那麼問題是您的方法是錯誤的。讓我們開始第一個:

public static String money(int n) { 
     double a = Integer.parseInt(n); 
     return money(n); 
    } 

在第二行,你叫的Integer.parseInt與int說法,但是該方法需要一個String說法。這不會編譯。此外,它不會做你在這一點上需要做的事情。 Integer.parseInt方法將String轉換爲int,但您沒有一個字符串開頭,並且不需要以int結束。

然後在第三行,你忽略a和遞歸調用money(int)與原始的參數。

該方法顯然應該做的是創建一個格式化的字符串,但您的代碼不會這樣做。


在後視中,那些遞歸調用可能是由您所抱怨的「捷徑」產生的。如果是這樣的話,最好的辦法是1)刪除它們,2)認爲關於你的問題陳述在這一點上需要什麼。 (提示:格式化...)

+0

謝謝你的解釋,我正在度過一個艱難的夜晚,並意識到我錯過了這麼多哈哈。我現在得到了它。 – HitmarCurse 2014-12-05 03:44:28

0
public static String money(int n) 
{ 
    n = n * 100; 
    double n1 = n/100; 
    String n2 = String.valueOf(n1); 
    return n2; 
} 

public static String money(double d) 
{ 
    d = Math.round(d*100); 
    d = d/100; 
    String d1 = String.valueOf(d); 
    return d1; 
} 

public static String money(String s) 
{ 
double s1 = Double.parseDouble(s); 
s1 = Math.round(s1*100); 
s1 = s1/100; 
String s2 = String.valueOf(s1); 
return s2; 
} 

public static void main(String[] args) 
{ 
    System.out.println(money(12.3456)); 
}