Java学习笔记27 将数字转换为中文…

//将命令行输入得纯数字转换为中文大写
public class CapitalToChinese 
{
public static StringBuffer buffer = new StringBuffer();//存储数字转换为中文大写的变长字符串
public static int k = -1;//非零数字开始的位置
public static void main(String[] args)
{
if(args.length > 1)
{
System.out.println("用户输入的字符不都为数字,无法转换");
System.exit(0);
}
char[] array = new char[args[0].length()];
args[0].getChars(0,args[0].length(), array, 0);
for(char arr : array)
{
if(arr < '0' || arr > '9')
{
System.out.println("用户输入的字符不都为数字,无法转换");
System.exit(0);
}
}
//ArrayList<String> list = new ArrayList<String>();
for(int i = 0; i < array.length; i++)
{
if('0' == array[i])
{
continue;
}
k = i;
break;
}
if(k == -1)
{
System.out.println("零");
System.exit(0);
}
CapitalToChinese chin = new CapitalToChinese();
int n = array.length - k;//数字所在的数位
chin.change(array[k],'0', n,true);
for(; k < array.length - 1; k++)
{
n = array.length - k - 1;
chin.change(array[k + 1],array[k], n,false);
}
System.out.println(buffer);
}
private void change(char ch,char last, int n,boolean m)
{
if(true == m)
{
switch(n)
{
case 1:buffer.append(finger(ch));return;
case 2:buffer.append(finger(ch) + "十");return;
case 3:buffer.append(finger(ch) + "百");return;
case 4:buffer.append(finger(ch) + "千");return;
case 5:buffer.append(finger(ch) + "万");return;
case 6:buffer.append(finger(ch) + "十");return;
case 7:buffer.append(finger(ch) + "百");return;
case 8:buffer.append(finger(ch) + "千");return;
}
return;
}
if('0' == last)
{
if('0' == ch)
{
return;
}
switch(n)
{
case 1:buffer.append("零" + finger(ch));return;
case 2:buffer.append("零" + finger(ch) + "十");return;
case 3:buffer.append("零" + finger(ch) + "百");return;
case 4:buffer.append("零" + finger(ch) + "千");return;
case 5:buffer.append("零" + finger(ch) + "万");return;
case 6:buffer.append("零" + finger(ch) + "十");return;
case 7:buffer.append("零" + finger(ch) + "百");return;
case 8:buffer.append("零" + finger(ch) + "千");return;
}
}
if('0' != last)
{
if('0' == ch)
{
return;
}
switch(n)
{
case 1:buffer.append(finger(ch));return;
case 2:buffer.append(finger(ch) + "十");return;
case 3:buffer.append(finger(ch) + "百");return;
case 4:buffer.append(finger(ch) + "千");return;
case 5:buffer.append(finger(ch) + "万");return;
case 6:buffer.append(finger(ch) + "十");return;
case 7:buffer.append(finger(ch) + "百");return;
case 8:buffer.append(finger(ch) + "千");return;
}
}
return;
}
private static String finger(char ch)
{
switch(ch)
{
case '0': return "零"; 
case '1': return "一"; 
case '2': return "二"; 
case '3': return "三"; 
case '4': return "四"; 
case '5': return "五"; 
case '6': return "六"; 
case '7': return "七"; 
case '8': return "八"; 
case '9': return "九"; 
}
return null;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值