写出这个数

原创 EShyee EShyee 2019-09-26

写出这个数

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

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1
1234567890987654321123456789

输出样例:

1
yi san wu

My answer:

package com.Eshyee.SumIn;

import java.util.Scanner;

public class Sum {

​ public static void main(String[] args) {

​ Scanner in = new Scanner(System.in);

​ //输入这个字符串

​ String s = in.nextLine();

​ int a = 0;

​ String c = “\0”;

​ for (int i = 0; i < s.length(); i++) {

​ //把字符串转换成int类型

​ a += s.charAt(i) - 48;

​ }

​ String n = String.valueOf(a);

​ for (int j = 0; j < n.length(); j++) {

​ int b = 0;

​ b = n.charAt(j) - 48;

​ //这里相当于把数字转换成汉字

​ switch (b) {

​ case 1:

​ c += “yi”;

​ break;

​ case 2:

​ c += “er”;

​ break;

​ case 3:

​ c += “san”;

​ break;

​ case 4:

​ c += “si”;

​ break;

​ case 5:

​ c += “wu”;

​ break;

​ case 6:

​ c += “liu”;

​ break;

​ case 7:

​ c += “qi”;

​ break;

​ case 8:

​ c += “ba”;

​ break;

​ case 9:

​ c += “jiu”;

​ break;

​ case 0:

​ c += “ling”;

​ break;

​ }

​ c += “ “;

​ }

​ System.out.print(c.trim());

​ }

}

本道题主要用到switch case charAt ascii码等方面的知识点

主要思想是:

先获取一串字符,然后遍历字符串,分别转换成int类型

此时的int是ascii码值 然后减48 获得真正的值

然后做累加 然后放到一个int里面 做一个switch case(笨办法)

将得到的这个值转换成汉字

最后System从console里面输出出来