面试遇到的一个递归题目

来源:互联网 发布:js改变css display 编辑:程序博客网 时间:2024/05/21 03:16

题目要求:定义一个方法,参数1,int dollars,代表美元;参数2,int cents,代表美分。一美元为一百美分。

要求输入后转化为此格式:$22,234,234.34

我百度了一个方法,java.text包下有一个Decimalformat类,专门提供格式转换的,具体可以查找相关案例,两三行代码就可以搞定。但我觉得这么一个机试题,就这么两行,可能不是出题的本意,所以面试回来研究一下,想写一下自己的方法。

代码如下:

public class changeMoneyFormat {


public static void main(String[] args) {
moneyFormat(32232323,00);
}



public static  void moneyFormat(int dollers, int cents){
String 前缀="";
String 拼接前缀="";
String 后缀=""+cents;
if(cents==0){//美分为0,后缀为00
后缀="00";
}if(cents>99||cents<0){//美分不能大于99或者小于0
System.out.println("美分范围为0-99之间");
return;
}

if(dollers==0){
拼接前缀="0";
}
if(dollers>=1){
//初始化前缀为金额转化的字符串
前缀=前缀+dollers;
doSomething(前缀,拼接前缀,后缀);
}else{
System.out.println("格式有误");
}
}


private static void doSomething(String 前缀,String 拼接前缀,String 后缀) {
//大于三,前边加逗号
if(前缀.length()>3){
//拼接前缀=,+后三位+原拼接前缀
拼接前缀=","+前缀.substring(前缀.length()-4, 前缀.length()-1)+拼接前缀;
//前缀=原前缀-后三位
前缀=前缀.substring(0, 前缀.length()-3);
//继续递归
doSomething(前缀, 拼接前缀,后缀);
}else{
//等于或者小于三,不加逗号,拼接字符串,然后结束
拼接前缀=前缀.substring(0, 前缀.length())+拼接前缀;
System.out.println("$"+拼接前缀+"."+后缀);
return;
}

}
}

代码有些不规范,有时间会修改完善,不喜勿喷。么么哒

原创粉丝点击