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