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

来源:互联网 发布:php csdn博客 编辑:程序博客网 时间:2024/06/05 19:14
//将命令行输入得纯数字转换为中文大写
public class CapitalToChinese 
{
public static StringBuffer buffer = newStringBuffer();//存储数字转换为中文大写的变长字符串
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 = newArrayList<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
原创粉丝点击