繁体   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