1002 写出这个数
小白刷题,Java语言
题目
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例
1234567890987654321123456789
输出样例
yi san wu
代码和解释
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//接收输入的数字字符串
Scanner sc = new Scanner(System.in);
String n = sc.next();
//使用toCharArray()方法将字符串转换为字符数组
char[] array = n.toCharArray();
//定义长度和字符型数组array相同的整型数组arr
int[] arr = new int[array.length];
int i, sum = 0;
//循环,根据ASCII编码排序规则,将array中的字符型数字减去字符型零(‘0’)
//转换为整数型数字。求出每一位相加的和sum
for (i = 0; i < array.length; i++) {
arr[i] = array[i] - '0';
sum += arr[i];
}
//String.valueOf(int i)方法将int变量sum转换成字符串
String str = String.valueOf(sum);
//重复上述方法,将求和结果的字符串转换为字符型数组,再转换为整型数组
char[] ar = str.toCharArray();
int[] a = new int[ar.length];
for(i=0;i<ar.length;i++){
a[i] = ar[i] - '0';
}
//循环套用if-else语句,判断出每一位的拼音,并输出每一位对应的拼音
for (i = 0; i < a.length; i++) {
//此处if语句保证从求和结果的第二位开始到最后一位输出的拼音前都有空格
//保证输出结果的开头和结尾没有空格,中间每一个拼音有空格间隔
if (i > 0) {
System.out.print(" ");
}
if (a[i] == 0) {
System.out.print("ling");
} else if (a[i] == 1) {
System.out.print("yi");
} else if (a[i] == 2) {
System.out.print("er");
} else if (a[i] == 3) {
System.out.print("san");
} else if (a[i] == 4) {
System.out.print("si");
} else if (a[i] == 5) {
System.out.print("wu");
} else if (a[i] == 6) {
System.out.print("liu");
} else if (a[i] == 7) {
System.out.print("qi");
} else if (a[i] == 8) {
System.out.print("ba");
} else if (a[i] == 9) {
System.out.print("jiu");
}
}
}
}