[英]Overloading Methods in Java (EMACS)
我對 Java 相當陌生,我花了幾個小時試圖弄清楚這個作業問題,但我還沒有弄清楚。 這是它的樣子:
為重載的單參數靜態方法 money 完成以下定義,該方法返回將其參數表示為金額的字符串。 例如,
如果輸入是雙精度 2.5,則返回字符串“$2.50”;
如果輸入是 int 6,則返回字符串“$6.00”; 和
如果輸入是字符串“6.125”,則返回字符串“$6.13”。
到目前為止,我已經得到了這個:
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 ) );
}
有人可以幫我弄清楚我做錯了什么嗎? 謝謝!
如果這是您的全部代碼,那么問題在於語法錯誤。 方法需要在類中聲明。 檢查您的教科書或講義,或查看 Oracle Java 教程。
如果這些只是片段,那么問題在於您的方法是錯誤的。 讓我們從第一個開始:
public static String money( int n ) {
double a = Integer.parseInt(n);
return money(n);
}
在第二行,您使用int
參數調用 Integer.parseInt,但該方法需要一個String
參數。 那不會編譯。 此外,它不會做你當時需要做的事情。 Integer.parseInt
方法將String
轉換為int
,但您沒有開始的字符串,也不需要以int
結束。
然后在第三行,你忽略的價值a
和遞歸調用money(int)
與原來的說法。
該方法顯然應該做的是創建一個格式化的字符串,但您的代碼並沒有這樣做。
事后看來,那些遞歸調用可能是由您抱怨的“捷徑”產生的。 如果是這種情況,最好的做法是 1) 刪除它們 2)考慮您的問題陳述此時需要什么。 (提示:格式化...)
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 ) );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.