【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

Java字符串应用场景:数字金额转换成汉字金额


前言

正常的数字金额或汉字简写由于笔画简单,容易被涂改伪篡,所以一般文书和商业财务票据上的数字都要采用汉字数码大写:中文金额数字大写分别为“壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万(萬)、亿、元(圆)、角、分、零、整(正)”。(“柒”在当时作为“漆”和“桼”的异体字,后来出现分化,将“柒”定为数字“柒”的大写,“桼”并入“漆”定为“刷”的意思。)所以今天小编就出一期关于字符串的应用场景之一:将简单的数字金额转换成大写的汉字金额~

一、String简单介绍

  1. String 表示字符串类型,属于引用数据类型,在使用之前需要进行初始化
  2. 在Java程序中用双引号的都是字符串类型,而字符类型char是用单引号括起来的
  3. String是Java定义好的一个类。定义在java.lang包中,所以使用的时候不需要导包(java.lang包是java核心包,已经有的)
  4. Java程序中,所有的字符串文字(例如"abcdefg"),都被实为String类的对象。
  5. 字符串不可变,它们的值在创建后不能被更改

二、字符串在开发中的应用场景

字符串的应用场景也很广泛,例如在开发中,我们常常会碰见字符串的比较功能(用户登录界面)、字符串的替换功能(在聊天界面中敏感词的替换)、字符串的转换功能(数字金额转换成汉字金额),还有一些字符串的截取查找切割检索等等

在这里插入图片描述
在这里插入图片描述

三、金额转换

字符串应用场景之一实例化:利用数组查表法,实现数字金额转换成汉字金额,输入一个数字金额(例如:2135)实现转成汉字的大写的汉字数码(零佰零拾零万贰千壹佰叁拾伍元)
在这里插入图片描述

3.1解题思路

  • 第一步:键盘录入让用户输入一个数字金额,并做数据的校验,判断是否合理输入,合理进行下一步,不合理重新录入(假设金额录入为:1234)
  • 第二步:将录入金额的每一位数字取出来
  • 第三步:定义一个方法,利用数组查表法,用得到的数字作为索引获取相对应的大写中文
  • 第四步:将得到的汉字拿出来,进行拼接,注意拼接的时候要反着拼接
  • 第五步:判断汉字个数是否到达了七位 没有到达进行补零
  • 第六步:创建一个数组用于存储金额单位:“佰”,“拾”,“万”,“千”,“佰”,“拾”,“元”
  • 第七步:遍历数组,得到每一位单位,将单位插入到已经完成补零的金额中 ,打印输出

3.2代码详解

package cn;
import java.util.Scanner;

public class Test2 {
//    目标:实现金额的转换  1234  -->   零佰零拾零万壹千贰佰叁拾肆元
    public static void main(String[] args) {
//    1.键盘录入金额 要做数据的校验  判断是否合理  合理继续执行下一步 不合理重新录入
        Scanner sc = new Scanner(System.in);
        int money;
        while (true) {
            System.out.println("请输入金额:");
            money = sc.nextInt();
            if (money >= 0 && money < 9999999) {
                break;
            } else {
                System.out.println("金额输入不合理,请重新输入!!");
            }
        }
//        System.out.println(money);

//    2.假设录入了  1234   -->  拿出数字的每一位  去找对应的中文汉字
        String moneyStr = "";
        while (true) {
//            从右往左获取数据,因为右侧是数据的个位
            int ge = money % 10;   // 1234 -->   4 3 2 1
//    3.将汉字拿出来 进行拼接
            String capitalNumber = getCapitalNumber(ge);    // 4 3 2 1   -->  肆 叁 贰 壹
//            moneyStr = moneyStr + capitalNumber;
//            ""  +  "肆"="肆"   第一次循环结束之后:moneyStr="肆"
//            "肆"+"叁"="肆叁"   第二次循环结束之后:moneyStr="肆叁"
//            因为是拿到的汉字反过来的 所以拼接的时候反着拼
            moneyStr = capitalNumber + moneyStr;   //第一次: 肆+""=肆   第二次: 叁+肆 =叁肆
            money = money / 10;
//            如果数字上的每一位全部获取到了,那么money记录的就是0,此时循环结束
            if (money == 0) {
                break;
            }
        }
//        System.out.println(moneyStr);


//    4.判断汉字个数是否到达了七位 没有到达进行补零
        int count = 7 - moneyStr.length();
        for (int i = 0; i < count; i++) {
            moneyStr = "零" + moneyStr;
        }
//        System.out.println(moneyStr);    //零零零壹贰叁肆

//    5.创建一个数组用于存储金额单位:  "佰","拾","万","千","佰","拾","元"
        String[] arr = {"佰", "拾", "万", "千", "佰", "拾", "元"};


//    6.遍历数组,得到每一位单位 将单位插入到已经完成补零的金额中  打印输出
        String result = "";
        for (int i = 0; i < arr.length; i++) {
//            方法一:得到用索引取出每一位中文金额  并将其插入单位中 直接进行打印
            char c = moneyStr.charAt(i);     //遍历moneyStr  依次得到 零 零 零 壹 贰 叁 肆
//            System.out.print(c);
//            System.out.print(arr[i]);
//            方法二:直接用字符拼接 打印输出
            result = result + c + arr[i];
        }
        System.out.println(result);
    }

//    创建一个方法来用数字找到对应的中文      查表法
//    1.我要干嘛?   用数字找到对应汉字
//    2.我需要什么东西?   数字
//    3.调用处是否需要用到方法里面的结果?  要
    public static String getCapitalNumber(int number) {
        String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        return arr[number];
    }
}

3.3运行结果

在这里插入图片描述

3.4.需要注意的点

一些代码详解里面的小片段(只针对需要注意的地方进行解释,不是完整的代码!!)

代码如下(示例):
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


四、拓展知识

4.1数组查表法

数组查表法:根据键盘录入的数字作为索引,查找数组索引中对应的元素 。

 public static String getIndex(int index) {
        String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        return arr[index];
    }

4.2 charAt(i)函数和str.charAt(i)函数

charAt(i) 函数: 是获取字符串中i位置的字符
str.charAt(i)函数 :是一个字符串方法,它返回字符串中指定位置的字符。其中 i 是要检索的字符在字符串中的位置,这个位置是从0开始算的。该方法会返回一个字符串类型的值,实际上当我们使用该方法时,在 JavaScript 内部它返回的是一个表示该字符的 Unicode 编码值,而不是一个数字或者字符本身。但对于大多数情况,这两者是可以互相转换的,因为每个字符都有一个唯一的 Unicode 编码点,而且这些编码点和 ASCII 码表中的数字和字符相对应。如果我们想输出该字符本身而不是它的 Unicode 编码值,则可以将它与空字符串进行连接,例如: str.charAt(i) + “”,或者使用模板字面量插入该字符,例如${str.charAt(i)}。

两者的区别:在JavaScript中,charAt(i)是一个字符串的方法,它用于返回一个字符串中指定索引位置(i)的字符。例如,如果有一个字符串"hello",那么调用该方法str.charAt(0)将返回"h"。而str.charAt(i)与charAt(i)类似,只不过前者是在一个具体的字符串对象上调用该方法,而后者是直接使用该全局函数来执行该操作。因此,str.charAt(i)中的str表示一个已声明的字符串变量或字符串对象。

总结

亲爱的小伙伴们,到这里小编就要结尾咯!开心开心~

以上就是Java应用场景之一的数字金额转换成大写的汉字金额,此外字符串的应用场景还有许多许多,如果小编想到并且觉得不错的话会陆续出新篇章,欢迎小伙伴们和我一起探讨。

如果文章有需要改正的地方或者有不明白的欢迎小伙伴们留言或私信哦!

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@¥文竹¥

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值