工作比较坑爹,不能及时的来上传答案。比较尴尬。。。不过在这里感觉还是有必要贴出来,就我感觉我的代码代码量量比较小,这里跟大家分享下思想。
/**
@author: lsc
@time : 2012.11.12
功能:实现将数字1234.56以壹仟两百三十四块五角六分的形式输出。
实现:1.将数字变成String类型,然后返回其长度。
2.将String对象变成char数组。同时创建一个数组按顺序存放仟、佰等单位。
3.用for循环同时遍历两个数组并将两个数组组合到一起输出。
如果学习了hashtable之后可以用哈希表实现,将会更加简单。
*/
class Change
{
public static void main(String[] args)
{
String[] st1 = {"万","仟","佰","十","元","角","分"};
String[] st2 = new String[10] ;
//用来标识是否上一个数是否是零,如果是则这次不需要输出。因为中间不管出现多少个零我们只要读一个。
boolean tag = true ;
double f = 10005.56;
int i = (int)(f*100) ;
// System.out.println(i);
String s = Integer.toString(i);
int len = s.length();
char[] c = s.toCharArray() ;
for(int x = 0; x < len; x ++)
{
//将数字转换成我们要的大写。
switch(c[x])
{
case'0' : st2[x] = "零" ; break;
case'1' : st2[x] = "壹" ; break;
case'2' : st2[x] = "贰" ; break;
case'3' : st2[x] = "叁" ; break;
case'4' : st2[x] = "肆" ; break;
case'5' : st2[x] = "伍" ; break;
case'6' : st2[x] = "陆" ; break;
case'7' : st2[x] = "柒" ; break;
case'8' : st2[x] = "捌" ; break;
case'9' : st2[x] = "玖" ; break;
}
//输出,要判断是否连续出现零,如果出现只输出一个。
if(c[x] != '0')
{
System.out.print(st2[x]+st1[x]);
tag = true ;
}
if (c[x] == '0'&&tag)
{
System.out.print(st2[x]);
tag = false ;
}
}
System.out.println();
}
}
以上就是代码,欢迎各位拍砖。
|