簡體   English   中英

Java 中的重載方法 (EMACS)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM