读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
这道题目关键在与n的数值比较大,如果将接受的类型设置为int那么已经越界了,所以要使用String来接受,然后转为为Char的数组,在将每个char转为为int做和运算
还有一点是因为%10取余数,再/10取掉最后一位,然后在上述的反复操作,每次取出的是最后一位,我是放在list集合里面的,
所以如果正常按顺序输入,那么汉字就会和实际的相反,所以要倒序输出。
代码如下
package com.fffff.basic;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Pat02_SumNum {
public static void main(String[] args) {
String[] HanZi = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu","shi"};
int sum=0;
List<String> list =new ArrayList();
Scanner input = new Scanner(System.in);
String testnum = input.next();
char[] charArray = testnum.toCharArray();
for(int i=0;i<charArray.length;i++) {
sum = sum + Integer.parseInt(String.valueOf(charArray[i]));
}
while(sum!=0) {
list.add(HanZi[sum%10]);
sum=sum/10;
}
for(int i=(list.size()-1);i!=0;i--) {
System.out.print(list.get(i)+" ");
}
System.out.println(list.get(0));
}
}