package T191012;
/**
* 读数问题
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 输入整数 x
// 0<x<1亿
System.out.print("请输入要转换的数值:");
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String in=sc.nextLine();
System.out.println(in);
// 判断输入的是不是整数
// 方法一:
// char[] str=in.toCharArray();
// for(char ch :str) {
// if(!Character.isDigit(ch)) {
// System.out.println("错误输入");
// return;
// }
// }
// 方法二(正则表达式):
String reg = "[0-9]\\d*";
Pattern pat = Pattern.compile(reg);
Matcher mat = pat.matcher(in);
if(!mat.matches()) {
System.out.println("错误输入");
return;
}
changeValues(str);
}
// 数值转换为中文数值
static void changeValues(char chArr[]) {
int len=chArr.length;
int start=-1;
int end=len;
// 去掉数值前面的无效值0
for(int i=0;i<len;i++) {
if(chArr[i]!='0') {
start=i;
break;
}
}
// 去掉数值最后面的0
for(int i=end-1;i>=start;i--) {
if(chArr[i]!='0') {
end=i;
break;
}
}
for(int i=start;i<=end;i++) {
char ch=chArr[i];
// 数值之间多余的0只用一个零表示
if(ch=='0') {
for(int k=i;k<len;k++) {
if(chArr[k]!='0') {
i=k-1;
break;
}
}
}
String valuesName = null;
switch(ch) {
case '0':
valuesName="零";
break;
case '1':
valuesName="一";
break;
case '2':
valuesName="二";
break;
case '3':
valuesName="三";
break;
case '4':
valuesName="四";
break;
case '5':
valuesName="五";
break;
case '6':
valuesName="六";
break;
case '7':
valuesName="七";
break;
case '8':
valuesName="八";
break;
case '9':
valuesName="九";
break;
}
// 处理10万的问题
if(len-i==5 && ch=='0') {
System.out.print("万");
}
else {
System.out.print(valuesName);
}
if(ch!='0') {
int num=len-i-2;
System.out.print(unitMethon(num));
}
}
}
// 加单位
static String unitMethon(int num) {
switch(num%4) {
case 0:
return "十";
case 1:
return "百";
case 2:
return "千";
case 3:
return "万";
default:
return "";
}
}
}