首页 > 其他分享 >PAT (Basic Level)--1002写出这个数

PAT (Basic Level)--1002写出这个数

时间:2024-10-21 22:48:07浏览次数:3  
标签:PAT Level -- sum System break int print out

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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

 代码如下:

 

import java.util.Scanner; //导入Scanner类,用于输入

public class Main { //定义一个名为Main的公共类
    public static void main(String[] args) { //类的主方法,程序运行入口
        Scanner sc = new Scanner(System.in); //创建Scanner对象,用于输入
        String s = sc.nextLine(); //读入一行字符串
        int sum = 0; //初始化一个整数变量sum,用于存储各位数之和
        int[] arr = new int[s.length()]; //定义一个整型数组arr,用于存储各位数字

        for (int i = 0; i < s.length(); i++) { //循环遍历字符串s的每一位
            arr[i] = s.charAt(i) - '0'; //将字符转换为数字,并存储到数组arr中
            sum += arr[i]; //将数字累加到sum变量中
        }

        if (sum == 0) { //如果各位数之和为0,则输出"ling"
            System.out.println("ling");
        } else { //否则执行以下操作
            int[] result = new int[10]; //定义一个整型数组result,用于存储各位数字的汉字表示
            int i = 0; //初始化一个整数变量i,用于记录result数组中存储了几个数字

            while (sum != 0) { //循环将各位数字的汉字表示存储到result数组中
                result[i] = sum % 10; //取出sum变量的个位数字,并存储到result数组中
                sum /= 10; //将sum变量除以10,舍去个位数字
                i++; //i自增1
            }

            for (int j = i - 1; j >= 0; j--) { //倒序遍历result数组
                switch (result[j]) { //根据result数组中的数字选择输出对应的汉字
                    case 0:
                        System.out.print("ling"); //如果为0,则输出"ling"
                        break;
                    case 1:
                        System.out.print("yi"); //如果为1,则输出"yi"
                        break;
                    case 2:
                        System.out.print("er"); //如果为2,则输出"er"
                        break;
                    case 3:
                        System.out.print("san"); //如果为3,则输出"san"
                        break;
                    case 4:
                        System.out.print("si"); //如果为4,则输出"si"
                        break;
                    case 5:
                        System.out.print("wu"); //如果为5,则输出"wu"
                        break;
                    case 6:
                        System.out.print("liu"); //如果为6,则输出"liu"
                        break;
                    case 7:
                        System.out.print("qi"); //如果为7,则输出"qi"
                        break;
                    case 8:
                        System.out.print("ba"); //如果为8,则输出"ba"
                        break;
                    case 9:
                        System.out.print("jiu"); //如果为9,则输出"jiu"
                        break;
                }
                if (j != 0) { //如果不是最后一个数字,则输出一个空格
                    System.out.print(" ");
                }
            }
        }
    }
}

不用switch用字符串数组实现:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int sum = 0;
        int[] arr = new int[s.length()];
        String[] st = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
        for(int i = 0; i < s.length();i++){
            arr[i] = s.charAt(i) - '0';
            sum += arr[i];
        }
        //再创建一个数组,反向输出
        String[] str = new String[10];
        int j = 0;
        while(sum != 0 ){
            str[j++] = st[sum%10];
            sum = sum / 10;
        }
        for(j = j - 1; j >= 0; j--){
            if(j > 0)
            System.out.print(str[j] + " ");
            else System.out.print(str[j]);
        }


    }
}

标签:PAT,Level,--,sum,System,break,int,print,out
From: https://blog.csdn.net/2302_79648928/article/details/143134117

相关文章

  • Qt编程技巧小知识点(3)十进制与十六进制数据转化
    文章目录Qt编程技巧小知识点(3)十进制与十六进制数据转化小结Qt编程技巧小知识点(3)十进制与十六进制数据转化  上下位机之间数据交互常需要将上位机的十进制发送到下位机,这时候常常涉及到数据进制的转化,这里以十进制与十六进制的数据转化为例,来简要阐述一下:首先,我们......
  • 聊一聊Spring中的@Value注解
    [!NOTE]**Spring版本:**5.3.27**JDK版本:**1.81、MyConfig.properties何时被加载解析?2、MyService中的两个@Value何时解析?3、MyService中的两个@Value何时注入属性文件中的值?一、样例服务类packagecom.lazy.snail.service;importorg.springframework.beans.fact......
  • 10月21日记录
    下午学习了java语言继承与派生;完善了四则运算的二三四年级的代码;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Random;importjava.util.Scanner;importjava.io.BufferedWriter;importjava.io.F......
  • Trim3D
    TrimGS------修剪3D高斯飞溅论文链接:TrimGS1.NeRF++1.1介绍在原始NeRF(NeuralRadianceFields)基础上进行改进和扩展的一种神经渲染技术。该技术主要解决了NeRF在处理大尺度、无边界场景(如室外360度场景)时面临的挑战,并提高了渲染质量和效率1.2改进地方形状-辐射模糊性......
  • 简单汇编教程9 字符串与字符串指令
    目录字符串的指令movs字符串传送lods,stos使用cmpsb的使用SCASB的使用字符串你很熟悉了,我们定义了无数次了!%macroANNOUNCE_STRING2 %1db%2 %1_LENequ$-%1%endmacro当然,我们现在来学习一个比较新的定义方式,那就是跟C语言一样安插一个哨兵字符\0......
  • 【可答疑】基于51单片机的智能小区安防系统(含仿真、代码、报告、演示视频等)
     ✨哈喽大家好,这里是@每天一杯冰美式oh,985电子本硕,大厂嵌入式在职0.3年,业余时间做做单片机小项目,有需要也可以提供就业指导(免费)~......
  • Leetcode 383.赎金信
    问题描述给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。示例1:输入:ransomNote="a",magazine="b"输出:false示例2:输入:ra......
  • LinkedList详解
    1概述LinkedList和ArrayList是Java集合框架中的两个重要类,它们分别基于链表和动态数组实现。LinkedList选择链表作为其底层数据结构的原因在于链表在某些操作上具有显著的优势。1.1链表的优势动态大小:链表不需要预先分配固定大小的内存,可以根据需要动态扩展或缩......
  • vue2组件
    模块和组件的区别1、模块化从代码逻辑的角度划分;方便代码分层开发,保证每个功能模块的职能单一2、组件化从UI界面的角度划分;前端的组件化,方便UI组件的重用父子组件传参1、父传子1、在父组件的子标签中自定义一个属性2、在子组件中使用props接收参数2、子传父1、在......
  • 【Javaee】网络编程-TCP Socket
    前言前文中我们介绍了UDPSocket相关的构造方法和方法,并实现了UDP的回显服务器和客户端。本篇将介绍TCPSocket,并使用TCPSocketapi实现服务器和客户端的通信一.TCPSocket的常见方法1.ServerSocketServerSocket是创建TCP服务端Socket的API1)ServerSocket构造方法方......