2021-09-28

博客探讨了一种原始的Java代码实现,该代码旨在将输入数字转换为其各个位上的拼音输出。作者指出,由于数值范围可能导致数据溢出,且计算复杂度过高,原始方法不适用。提出了将数字视为字符串处理的优化思路,但具体实现细节待补充。
摘要由CSDN通过智能技术生成

PTA1002做题思考

  1. 题目内容:
    在这里插入图片描述

我的源代码:

<textarea readonly="readonly" name="code" class="java"> 
package Yiji;

import java.util.Scanner;

public class XiechuZhegeshu {
       public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    long number = in.nextInt();

    //计算输入数字各个位的数字之和
    int sum = 0;
    while (number > 0) {
        long wei = number % 10;
        sum += wei;
        number = number / 10;
    }
    System.out.println("sum的值为:" + sum);


    //计算sum的位数,并创建数组储存各个位上面的数字
    int weishu = 0;
    int anumber = sum;
    while (anumber > 0) {
        anumber = anumber / 10;
        weishu++;
    }
    System.out.println("sum的位数是:" + weishu);
    int[] store = new int[weishu];
    int mul = 10;
    int bnumber = sum;
    for (int i = weishu - 1; i >= 0; i--) {
        store[i] = bnumber % mul;
        bnumber = bnumber / mul;
    }


    //循环抽取每一位上的数字,并输出对应的拼音和空格
    for (int i = 0; i < store.length; i++) {

        switch (store[i]) {
            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;
        }

        for (int j = 0; j < store.length - 1; j++) {
            System.out.print(" ");
        }

    }


}

以上的代码是将目标数拆分成一个个单独的数,然后对应匹配拼音进行输出,然而目标数的范围太大即使是long int型也会越界,且运算的复杂度过高,故而这种方法是错误的。

应该将目标数看成一个字符串类型进行处理!

—————————————————————————————————————————
思路二,字符串方法处理:

待更…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值