Java递归示例
我正在为一个类处理一个问题,在这个类中,用户输入一个数字,如果数字大于等于1000,则必须添加逗号。因此,如果用户输入12300,输出将为12300。我能够找出如何对100万以下的数字进行打印,但当我输入1234567这样的数字时,它根本不会打印任何内容。以下是该方法的代码:Java递归示例,java,recursion,Java,Recursion,我正在为一个类处理一个问题,在这个类中,用户输入一个数字,如果数字大于等于1000,则必须添加逗号。因此,如果用户输入12300,输出将为12300。我能够找出如何对100万以下的数字进行打印,但当我输入1234567这样的数字时,它根本不会打印任何内容。以下是该方法的代码: public static String commas(long l) { String s = ""; String pt1; String pt2; long pt1Number;
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;
}
}
公共静态字符串逗号(长l){
字符串s=“”;
字符串pt1;
字符串pt2;
长PT1号;
长PT2数;
if(l<1){
返回字符串.valueOf(l);
}否则{
PT1编号=l/1000;
pt2Number=l%1000;
如果(PT1编号<1000){
pt1=字符串.valueOf(pt1Number);
pt2=字符串.valueOf(pt2Number);
s=pt1+“,”+pt2;
}否则{
逗号(PT1编号);
}
}
返回s;
}
}
有人看到我的代码可能有什么问题吗?在您的其他
中(当pt1Number
等于1000时),您对逗号(pt1Number)
的结果不做任何处理。调用函数,完全忽略其结果。然后,返回仍然为空的s
也许你的意思是
else{
s=逗号(PT1编号);
}
…而不是:
else{
逗号(PT1编号);
}
你是这个意思吗
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){
返回字符串.valueOf(输入);
}否则{
长PT1编号=输入/1000;
长pt2Number=输入%1000;
返回逗号(pt1Number)+“
+(pt2Number==0l?“000”:String.valueOf(pt2Number));
}
}
代码中的一些问题:
- 递归的用法不正确,您已经意识到
- 未检查大小写,如果
,则应连接%1000==0
,例如000
input=2000
- 避免使用
作为参数名称,以提高可读性,类似于l
1
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));
}
公共类逗号{
公共静态字符串逗号(长l){
字符串s=“”;
长PT1编号;长PT2编号;
如果(l<1000){
返回字符串.valueOf(l);
}否则{
PT1编号=l/1000;
pt2Number=l%1000;
如果(PT1编号<1000){
如果(pt2Number==0){
s=pt1Number+“,”+“000”;
}否则,如果(pt2Number>0&&pt2Number9&&pt2Number0&&pt2Number9&&pt2Number9&&pt2Numbermy参数是一个长参数,但我返回一个字符串(赋值必须是这样),那么我认为你的建议行不通……我的建议是对逗号(pt1Number)的结果进行处理;
。例如,将其存储在s
中。输入参数与此无关。是的,谢谢您的帮助。但是“pt2Number==0l?”000的确切含义是什么:“做什么?我还没有学过。”yet@BenjaminPorterc=条件?a:b
如果条件为真,c=a,否则c=b