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


文章目录

  • Java字符串应用场景:数字金额转换成汉字金额
  • 前言
  • 一、String简单介绍
  • 二、字符串在开发中的应用场景
  • 三、金额转换
  • 3.1解题思路
  • 3.2代码详解
  • 3.3运行结果
  • 3.4.需要注意的点
  • 四、拓展知识
  • 4.1数组查表法
  • 4.2 charAt(i)函数和str.charAt(i)函数
  • 总结



前言

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

一、String简单介绍

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

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

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

java 大写HH java中文大写金额_java 大写HH


java 大写HH java中文大写金额_java 大写HH_02

三、金额转换

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

java 大写HH java中文大写金额_字符串_03

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运行结果

java 大写HH java中文大写金额_字符串_04

3.4.需要注意的点

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

代码如下(示例):

java 大写HH java中文大写金额_java_05


java 大写HH java中文大写金额_java_06

java 大写HH java中文大写金额_java_07


四、拓展知识

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