JavaBean字符串训练(支票大写)

复制代码
package 字符串练习;

import java.util.Scanner;

public class 人名币训练 {
    public static void main(String[] args) {
        /* 需求: 用户输入一个数字,改成发票那样的展示出来
           例子: 4321 -> 零佰零拾零万肆千叁佰贰拾壹元
            共七位(固定)
         */
        //思路: 1. 把用户读入的数字改写成大写,并用字符串拼接起来
        //      2. 计算用户读入数字的位数
        //      3. 在字符串前面补零(个数 = 7 - 用户读入的数字位数)
        //      4. 再定义好单位名,两个string数组再同时拼接就ok了

        int user_input_number = user_input();
        //读入完毕

        String upper_user_input_Reverse = upper_chinese(user_input_number);
        //大写字符串完毕(反向)

        String upper_forward_user_input_number = forware_use_input_upper(upper_user_input_Reverse);
        //正向用户读入数字大写字符串准备完毕

        upper_forward_user_input_number = add_zero(upper_forward_user_input_number);
        //补零完毕

        result(upper_forward_user_input_number);
    }

        public static int user_input () {
            //用户读入数据
            Scanner sc = new Scanner(System.in);
            int user_input_number = sc.nextInt();
            //读入完毕
            return user_input_number;
        }

        public static String upper_chinese ( int user_input_number ){
            //改写成大写,那就要先写好每个数字的大写汉字放到数组里
            String upper_chinese[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };

            //想要得到每一位数字的大写,那么就先要得到每一位数字,然后数字对应大写数组索引取值就ok了
            //先定义一个空string字符串,用于拼接
            String upper_user_input_Reverse = "";

            while (user_input_number > 0) {
                upper_user_input_Reverse += upper_chinese[user_input_number % 10];
                user_input_number /= 10;
            }
            //大写字符串完毕(反向)
            return upper_user_input_Reverse;
        }

        public static String forware_use_input_upper (String upper_user_input_Reverse){
            //准备将反向改成正向
            String upper_forward_user_input_number = "";
            for (int i = upper_user_input_Reverse.length() - 1; i >= 0; i--) {
                upper_forward_user_input_number += upper_user_input_Reverse.charAt(i);
            }
            return upper_forward_user_input_number;
        }

        public static String add_zero (String upper_forward_user_input_number ){
            //计算位数
            int count = upper_forward_user_input_number.length();
            //补 零
            for (int i = count; i < 7; i++) {
                upper_forward_user_input_number = "零" + upper_forward_user_input_number;
            }
            return upper_forward_user_input_number;
        }
        public static void result(String upper_forward_user_input_number){
            //定义单位名
            char unit[] = {'佰','拾','万','千','佰','拾','元'};

            //同时拼接
            String results = "";
            for (int i = 0; i < upper_forward_user_input_number.length(); i++) {
                results = results + upper_forward_user_input_number.charAt(i) + unit[i];
            }
            System.out.println(results);
        }
}
相关推荐
不正经学生37 分钟前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
门思科技1 小时前
LoRaWAN 设备类别:Class A、B、C 对比与选型指南
c语言·开发语言·php
毕竟是shy哥3 小时前
计算YOLO数据集中每个类的目标数
算法·yolo·机器学习
M78佐菲3 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
恋恋西风3 小时前
C++ 理解 std::thread 在单核和多核上的行为差异
开发语言·c++
学长毕业设计3 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
Brilliantwxx3 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
东小西4 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西4 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午4 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式