我正在处理用户输入数字的类的问题,如果是1000或更高,则必须添加逗号。因此,如果用户输入12300,则输出将为12,300。我能够弄清楚如何为低于100万的数字做这件事,但是当我输入像1234567这样的数字时,它根本不打印任何东西。以下是该方法的代码:
public static String commas(long l) {
String s = "";
String pt1;
String pt2;
long pt1Number;
long pt2Number;
if (l < 1) {
return String.valueOf(l);
} else {
pt1Number = l / 1000;
pt2Number = l % 1000;
if (pt1Number < 1000) {
pt1 = String.valueOf(pt1Number);
pt2 = String.valueOf(pt2Number);
s = pt1 + "," + pt2;
} else {
commas(pt1Number);
}
}
return s;
}
}
有人看到我的代码可能出错吗?
答案 0 :(得分:1)
public static String commas(long input) {
if (input < 1000) {
return String.valueOf(input);
} else {
long pt1Number = input / 1000;
long pt2Number = input % 1000;
return commas(pt1Number) + ","
+ (pt2Number==0l?"000":String.valueOf(pt2Number));
}
}
您的代码中存在一些问题:
%1000==0
,你应该联合000
,例如。 input=2000
l
作为参数名称以提高可读性,看起来与1
类似答案 1 :(得分:0)
在else
(当pt1Number
是&gt; = 1000时)时,您对commas(pt1Number)
的结果一无所知。你调用函数,完全忽略它的结果。然后,您返回s
,它仍为空。
也许你的意思......
else {
s = commas(pt1Number);
}
...而不是:
else {
commas(pt1Number);
}
答案 2 :(得分:0)
您的程序不适用于至少次要案件 即 11输出是0,11 1000输出是1,0
请相应更改您的逻辑。
@Kent 1010为此你的输出是1,10
按照我的说法,你的代码应该修改如下
public class Comma {
public static String commas(long l) {
String s = "";
long pt1Number;long pt2Number;
if (l < 1000) {
return String.valueOf(l);
} else {
pt1Number = l / 1000;
pt2Number = l % 1000;
if (pt1Number < 1000) {
if (pt2Number == 0) {
s=pt1Number+","+"000";
}else if(pt2Number>0 &&pt2Number<10)
{
s=pt1Number+","+"00"+pt2Number;
}
else if(pt2Number>9 &&pt2Number<100)
{
s=pt1Number+","+"0"+pt2Number;
}
} else {
if (pt2Number == 0) {
s=commas(pt1Number)+","+"000";
}else if(pt2Number>0 &&pt2Number<10)
{
s=commas(pt1Number)+","+"00"+pt2Number;
}
else if(pt2Number>9 &&pt2Number<100)
{
s=commas(pt1Number)+","+"0"+pt2Number;
}
}
return s;
}
}
public static void main(String[] args) {
System.out.println(commas(1000009));
}
}