输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
import java.util.Scanner;
public class lab {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String a=in.nextLine();
char b[] = a.toCharArray();//将一串数字拆分单个存在数组中
int sum=0;
for(int i=0;i<b.length;i++)
{
String c = b[i]+"";
int d = Integer.parseInt(c);//string型转换成int型
sum=sum+d;
}
String s=String.valueOf(sum);//int型转换成string型
char d[]=s.toCharArray();
for(int i=0;i<d.length;i++)
{
String e = d[i]+"";
int f = Integer.parseInt(e);
switch(f)
{
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;
default:break;
}
if(i<d.length-1){
System.out.print(" ");//输出格式
}
}
}
}
写的过程中我的思路是:先将输入的数字串单个拆分存储在数组中,再将其取出转换成int型,分别相加求和sum,再将和sum(int型)转换成string型,再次拆分存在数组中,取出后用switch语句输出,因为题目要求拼音间有一个空格,最后的拼音无空格,所以最后加个if语句判定,我之前就没管这个,然后pat上提交代码提示格式错误。后面代码应该可以优化的,我之前关于输出的想法是用二维数组将每个值对应的拼音存储在里面,再查询后输出,应该可以减少代码的冗余,不过自己不太会相关的操作,待我慢慢了解。