读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
思路:一开始用long类型的变量来接收输入的值,先把输入值的各位数字之和算出来,然后从高位取出每一位来做判断输出的数字拼音。结果编译的时候报错了。想着是10的100次方这个数太大了,long类型的变量根本就装不下,后来改用字符串解决了这个问题。
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner in=new Scanner(System.in); String n=in.nextLine(); int sum=0,m=0; int number=0; for(int i=0;i<n.length();i++) { sum+=n.charAt(i)-'0'; } List<Integer> a = new ArrayList<>(); while(sum>0) { a.add(sum%10); sum=sum/10; } for(int i=a.size()-1;i>=0;i--) { int num=a.get(i); switch(num) { 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; case 0:System.out.print("ling"); break; } if(i != 0) { System.out.print(" "); } } } }