作者: _王涛 时间: 2013-4-16 14:17
下面是我的修改::
import java.util.Scanner;
public class MoneyTrant
{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(true){
System.out.println("请输入你要转换的货币金额");
String money = in.next();
if(money.equalsIgnoreCase("over"))
break;
try{
long moneyNumber = Long.parseLong(money);
trant(moneyNumber);
}catch(Exception e){
throw new RuntimeException("非法数字");
}
}
}
public static void trant(Long moneyNumber){
char[] chineseNumber = new char[]{'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
char[] units = new char[]{'元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟'};
int index = 0;
long lastNumber = 0;
StringBuilder sb = new StringBuilder();
while(moneyNumber !=0){
lastNumber = moneyNumber%10;
sb.insert(0,units[index++]);
sb.insert(0,chineseNumber[(int)lastNumber]);
moneyNumber = moneyNumber/10;
}
String money = sb.toString().replaceAll("零[拾佰仟]","零").replaceAll("零+亿","亿").replaceAll("零+万","零").
replaceAll("零+元","元");
System.out.println(money);
}
}
我认为需要判断下是否是数字类型,万一输入非法字符的情况呢,所以加一个异常捕获最佳。。。 作者: 郭东生 时间: 2013-4-16 14:57
小数不可以转换,
Exception in thread "main" java.lang.NumberFormatException: For input string: "2
5.3"
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:65)
at java.lang.Long.parseLong(Long.java:441)
at java.lang.Long.parseLong(Long.java:483)
at MoneyTrant.main(MoneyTrant.java:12)作者: 郭东生 时间: 2013-4-16 15:01
这个数转换结果不正确