面试遇到的一个递归题目
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;
}
}
}
代码有些不规范,有时间会修改完善,不喜勿喷。么么哒
要求输入后转化为此格式:$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;
}
}
}
代码有些不规范,有时间会修改完善,不喜勿喷。么么哒
相关文章推荐
- 面试时遇到的一个c++算法题目
- 几道不错的面试题目,遇到一个写一个吧。
- 程序员面试题目总结--数组(一)【递归求数组所有元素和、用一个for循环打印出一个二维数组、用递归判断数组是否是递增、有序数组中删除重复元素】
- 几个面试可能遇到的题目
- 阿里巴巴Java程序员面试的11个题目,网友:居然一个都不会!
- 前端面试遇到的一个逻辑题
- 最近面试遇到的Windows相关的题目
- 面试过程中遇到的C语言题目[值得一看~]
- 近日参加面试遇到的题目
- 一个朋友面试时遇到的算法题(怎么组合后得到最大整数)
- 用CSS的方法如何让一个元素不可见?(面试题目)
- 一个很费解的面试题目 有点儿意思
- 一个很有意思的面试题目
- 近期面试遇到的题目
- 面试遇到的一个小问题,集合学了这么久,除了常用的基本上都忘了
- 题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。
- JavaScript使用递归遇到的一个问题
- 微软的一个面试题目
- 面试趣事,我遇到的一个极品老女人
- 总结面试中遇到的题目---持续更新