读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
import java.util.Scanner;
public class Main{
public static void main(String[] args){
int sum = 0 ;
char[] n = new char[101];
Scanner input = new Scanner(System.in);
String s = input.nextLine();//扫描所有字符直到回车结束
for(int i = 0;i<s.length();i++){
n[i] = s.charAt(i);//返回指定字符的下标
}
int i = 0,j = 0;
int[] b = new int[11];
while(n[i]!='\0'){//接收输入的字母,当字符n[i]不等于结束符‘0’时,继续。
sum +=n[i]-'0';//把字符型数据转换为整型,在ACSII码表中,字符‘0’的十进制值是48,假设有一个字符为‘0’,
i++; // 那么计算机识别出来的十进制值是48,而不是0。所以可以通过问题上的公式可以把字符型的0转化为整型的0。
} //同理,可以把1到9的字符转换成整型的1到9,
if(sum ==0){
letter(0);
}else{
while(sum != 0){
b[j] = sum%10;
sum/=10;
j++;
}
for(i = j-1;i>0;--i){//如果这里i>=0,将会输出空格
letter(b[i]);//倒着输出
System.out.print(" ");
}
}
letter(b[0]);//没有这句话输出一三,没有五,前面循环没有循环最后一个数字
}
public static void letter(int l){
switch(l){
case 0:
System.out.print("ling");
break;
case 1:
System.out.print("yi");
break;
case 2:
System.out.print("er");
break;
case 3:
System.out.print("san");
break;
case 4:
System.out.print("si");
break;
case 5:
System.out.print("wu");
break;
case 6:
System.out.print("liu");
break;
case 7:
System.out.print("qi");
break;
case 8:
System.out.print("ba");
break;
case 9:
System.out.print("jiu");
break;
}
}
}