/**
*输入一串数字,输出这串数字对应的中文读法
* 如:
* 输入:832900180 输出:八亿三千二百九十万一百八十
*
* 思路:1.中文读法都是4个一串,所以我用a和b分别来表示这是哪一段(a=len/4)的第几个(b=len%4)数字
* 2.遍历字符串中的每一个数字,根据其位置,打印出正确的信息
* 注意事项:
* 1.在判断某位是否为0时,呀采用字符'0'而不是简单的数字0;
* 2.在某位数字为0时,应该怎么处理,这就涉及到这个数字处在每一段的哪个位置,同一段的其他数字是否为零的情况,
* 可以用设计测试用例的方法来书写此段代码
* Created by Administrator on 2017/10/26.
*/
import java.util.Scanner;
public class Num2Chin {
public static void main(String[] args) {
char[] arr={'十','百','千'};
char[] brr={'万','亿'};
char[] crr={'一','二','三','四','五','六','七','八','九'};
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
int len=str.length();
for(int i=0;i
if(str.charAt(i)!=0){
break;
}else{
len--;
}
}
int a=len/4;
int b=len%4;
if(b==0){b=4;a=a-1;}
for(int i=str.length()-len;i
boolean flag=false;
while(b>=1){
if(b==3&&str.charAt(i)=='0'&&str.charAt(i-1)!='0'&&str.charAt(i+2)!='0'&&str.charAt(i+1)!='0'){
System.out.print("零");
}else if(b==2&&str.charAt(i)=='0'&&str.charAt(i-1)!='0'&&str.charAt(i+1)!='0'){
System.out.print("零");
}else if(str.charAt(i)=='0'){
;
}
else if(b>=2){
flag=true;
System.out.print(crr[str.charAt(i)-'1']+""+arr[b-2]);
}
else {
flag=true;
System.out.print(crr[str.charAt(i) - '1']);
}
i++;
b--;
}
if(flag==true&&a>=1){
System.out.print(brr[a-1]);
}
a--;
b=4;
}
}
}
还有一种思路:判断当前数字为第几位,然后相应地跟上对应位数的单位