Java字符串应用场景:数字金额转换成汉字金额
文章目录
- Java字符串应用场景:数字金额转换成汉字金额
- 前言
- 一、String简单介绍
- 二、字符串在开发中的应用场景
- 三、金额转换
- 3.1解题思路
- 3.2代码详解
- 3.3运行结果
- 3.4.需要注意的点
- 四、拓展知识
- 4.1数组查表法
- 4.2 charAt(i)函数和str.charAt(i)函数
- 总结
前言
正常的数字金额或汉字简写由于笔画简单,容易被涂改伪篡,所以一般文书和商业财务票据上的数字都要采用汉字数码大写:中文金额数字大写分别为“壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万(萬)、亿、元(圆)、角、分、零、整(正)”。(“柒”在当时作为“漆”和“桼”的异体字,后来出现分化,将“柒”定为数字“柒”的大写,“桼”并入“漆”定为“刷”的意思。)所以今天小编就出一期关于字符串的应用场景之一:将简单的数字金额转换成大写的汉字金额~
一、String简单介绍
- String 表示字符串类型,属于引用数据类型,在使用之前需要进行初始化
- 在Java程序中用双引号的都是字符串类型,而字符类型char是用单引号括起来的
- String是Java定义好的一个类。定义在java.lang包中,所以使用的时候不需要导包(java.lang包是java核心包,已经有的)
- Java程序中,所有的字符串文字(例如"abcdefg"),都被实为String类的对象。
- 字符串不可变,它们的值在创建后不能被更改
二、字符串在开发中的应用场景
字符串的应用场景也很广泛,例如在开发中,我们常常会碰见字符串的比较功能
(用户登录界面)、字符串的替换功能
(在聊天界面中敏感词的替换)、字符串的转换功能
(数字金额转换成汉字金额),还有一些字符串的截取
、查找
、切割
、检索
等等
三、金额转换
字符串应用场景之一实例化:利用数组查表法,实现数字金额转换成汉字金额,输入一个数字金额(例如: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应用场景之一的数字金额转换成大写的汉字金额,此外字符串的应用场景还有许多许多,如果小编想到并且觉得不错的话会陆续出新篇章,欢迎小伙伴们和我一起探讨。