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

xiaoxiao2021-02-28  125

//将命令行输入得纯数字转换为中文大写 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; } }
转载请注明原文地址: https://www.6miu.com/read-26838.html

最新回复(0)