念整数

作者: Coder_Newson | 来源:发表于2019-10-17 15:45 被阅读0次

题目来源:中国大学MOOC——零基础学JAVA

第四周编程题,完整题目如下:

题目内容:

你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

如输入1234,则输出:

yi er san si

注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:

fu er san si yi

输入格式:

一个整数,范围是[-100000,100000]。

输出格式:

表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

输入样例:

-30

输出样例:

fu san ling

本人的解题思路如下,如有不同意见,欢迎讨论。

根据数字范围创建一个长度为6位的整型数组,用于保存用户输入的数;

通过 % 和 / 来得到每一个位置上的数字,添加入数组中,这里有一个问题,比如我输入的是:12345

那么存入数组的时候是这样的:5 4 3 2 1,这个没影响,倒序遍历输出就可以了,关键问题是数字和拼音的映射关系,这里就要用到 switch……case,需要注意的是case :后面要加break;不然每次就只读到最后一个case,这也是我踩过的坑。剩下就简单多了,判断正负,然后输出,注意末尾没有空格这些细节。

完整代码如下:

package www.zhejiang.test04;

import java.util.Scanner;

/**
 * @创建人 wuzengyu
 * @创建时间 2019/10/17
 * @描述
 */

public class Transfer {
    public static void main(String[] args) {
        int num;
        int count = 0;
        int[] number = new int[6];
        Scanner sc = new Scanner(System.in);
        // 接受正确范围数字
        while(true)
        {
            num = sc.nextInt();
            if (num >= -100000 && num <= 100000)
            {
                break;
            }
        }

        // 副本
        int copyNum = num;

        // 得到位数
        while (true)
        {
            if (copyNum < 0)
            {
                copyNum = -copyNum;
            }
            int digit = copyNum % 10;   // 个位
            number[count] = digit;
            count++;
            if (copyNum >=0&&copyNum <=9)
            {
                break;
            }
            copyNum = copyNum / 10;
        }

        if (num < 0)
        {
            System.out.print("fu ");
        }

        String pinyin = "";
        for (int i = count; i > 0;i--)
        {
            switch (number[i-1])
            {
                case 0:
                    pinyin = "ling"; break;
                case 1:
                    pinyin = "yi"; break;
                case 2:
                    pinyin = "er"; break;
                case 3:
                    pinyin = "san"; break;
                case 4:
                    pinyin = "si"; break;
                case 5:
                    pinyin = "wu"; break;
                case 6:
                    pinyin = "liu"; break;
                case 7:
                    pinyin = "qi"; break;
                case 8:
                    pinyin = "ba"; break;
                case 9:
                    pinyin = "jiu"; break;

            }
            if (i != 1)
            {
                System.out.print(pinyin + " ");
            }
            else if (i == 1)
            {
                System.out.print(pinyin);
            }
        }
    }
}

运行结果如下:

负数:

image

正数:

image

个人感觉代码写得多了,但又没有更好的解决思路,如果大家有更好的解决方法,欢迎指教~

相关文章

  • 念整数

    题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出...

  • 念整数

    题目来源:中国大学MOOC——零基础学JAVA 第四周编程题,完整题目如下: 题目内容: 你的程序要读入一个整数,...

  • 7.念整数

    题目内容:你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出...

  • 2念整数(5分)

    题目内容:你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出...

  • 【第五周作业02念整数】程序设计入门——C语言(翁恺)

    念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个...

  • 条件判断语句

    整数1 -eq 整数2:判断整数1和整数2是否相等 整数1 -ne 整数2:判断整数1是否不相等整数2...

  • 第四周深入循环_念整数

    题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出...

  • 4-2/3整数类型

    整数类型用于表示整数。 整数类型分为两种: (1)有符号整数类型:可以表示正整数、0和负整数。 (2)无符号整数类...

  • swift 4.x 整数类型

    整数类型用于表示整数。 整数类型分为两种:(1)有符号整数类型:可以表示正整数、0和负整数。(2)无符号整数类型:...

  • 整数

    整数类型:无符号整数和带符号整数 通常用补码来表示带符号整数 浮点数中有两个定点整数:一个是尾数(定点小数,就是用...

网友评论

      本文标题:念整数

      本文链接:https://www.haomeiwen.com/subject/bxqvmctx.html