PAT乙级1002

题目链接

https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384

题解

先以字符串形式读取用户输入的数字,然后计算各位之和,再把这个和的每一位以拼音形式输出。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.util.Scanner;

/**
* PTABasicLevel 1002
* https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384
*/
public class T1002 {
public static void main(String[] args) {
//保存自然数
String numStr;

//用字符串保存用户输入的数字
Scanner scanner=new Scanner(System.in);
numStr=scanner.next();

//计算每位之和并输出对应汉语
printSum(calcSum(numStr));

//关闭scanner
scanner.close();
}

/**
* 计算字符串形式的数字的各位之和
* @param str 用户输入的数字的字符串形式
* @return int类型,用户输入的数字各位之和
*/
public static int calcSum(String str) {
//保存各位数字之和
int sum = 0;

//计算各位数字之和
int length = str.length();
for (int i = 0; i < length; ++i) {
sum += str.charAt(i) - '0';
}

//返回各位数字之和
return sum;
}


/**
* 输出一个数字对应的汉语
* @param sum 用户输入的各位数字之和
* 输出这个和对应的汉语
*/
public static void printSum(int sum) {

//拼音
String[] chineseArr = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};

//int类型的sum转成字符串
String sumStr=Integer.toString(sum);

//输出
System.out.print(chineseArr[sumStr.charAt(0)-'0']);

int length=sumStr.length();
for(int i=1;i<length;i++){
System.out.print(" "+chineseArr[sumStr.charAt(i)-'0']);
}
}
}

作者:@臭咸鱼

转载请注明出处:https://chouxianyu.github.io

欢迎讨论和交流!