您的位置:首页 > 职场人生

面试遇到的一个递归题目

2017-09-07 16:59 239 查看
题目要求:定义一个方法,参数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;
}

}

}

代码有些不规范,有时间会修改完善,不喜勿喷。么么哒
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 面试