1002. 写出这个数 (20)

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。


输入格式:每个测试输入包含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上提交代码提示格式错误。后面代码应该可以优化的,我之前关于输出的想法是用二维数组将每个值对应的拼音存储在里面,再查询后输出,应该可以减少代码的冗余,不过自己不太会相关的操作,待我慢慢了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值