前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【java筑基】实战java基本数据类型与字符串操作

【java筑基】实战java基本数据类型与字符串操作

作者头像
用户10127530
发布2022-10-26 18:27:55
3520
发布2022-10-26 18:27:55
举报
文章被收录于专栏:半旧的技术栈

前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 ☕专栏简介:深入、全面、系统的介绍java的基础知识 🌰 文章简介:本文将介绍数字转换为大写人民币表示形式与验证码技术,建议收藏备用,创作不易,敬请三连哦

文章目录

一、数字转换为大写人民币表示形式

1.整体思路

把一个数字转换为人民币的表示方式是银行常用的业务。

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

把数字转换为人民币的大写表示方式的第一步就是要把数字拆分为整数部分和小数部分,因为整数部分和小数部分要分进行处理

代码语言:javascript
复制
/**
	 * 把一个浮点数分解为小数部分和整数部分
	 * 
	 * @param num
	 *            需要被分解的浮点数
	 * @return 整数部分、小数部分组成的字符串数组
	 */
	private String[] divide(double num) {
		// 1.通过把double类型的数据转换为long类型,截取整数部分
		long zheng = (long) num;
		// 2.原来的数据减去整数部分乘以100取整得到两位小数的整数表示
		long xiao = Math.round((num - zheng) * 100);
		// 以下两种方式都可以把基本数据类型转换为字符串
		return new String[] { "" + zheng, String.valueOf(xiao) };

	}

2.小数处理

对于整数部分与小数部分分别进行处理,小数部分比较简单,只需截断为两位数字,转换为几角几分。对于整数部分,处理较为复杂。中文人民币表示方法中,对整数部分处理是四位一节的,如果数字是1-4位,则在后面加单位“元”,出现在5-8位,则添加单位“万”,出现在9-12位,则添加单位“亿”。

这里补充下Math.round函数,将原来的数字进行四舍五入处理,即原数0.5向下取整。可以这么理解,取一个数近似整数,如果返回两个近似值一样的整数,则取大一点的那个。

接下来将一个四位的整数字符串转换位汉字读法的代码。

代码语言:javascript
复制
private String[] hanArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌",
			"玖" };
private String[] unitArr = { "十", "百", "千" };

/**
	 * 个、十、百、千位的字符串数据转换为汉字表示方法
	 * 
	 * @param numStr
	 *            四位字符串数据
	 * @return 字符串汉字表示形式
	 */
	private String toHanStr(String numStr) {
		String result = "";
		int numLen = numStr.length();
		// 依次遍历访问字符串numStr的每一个数字
		for (int i = 0; i < numLen; i++) {
			// 使用String.charAt()方法截取字符串的每一位,
			// 并将截取的char类型数字转换为int类型的数字(比如'4'转换为4,它们ASCII码差48)
			int num = numStr.charAt(i) - 48;
			// 如果不是最后一位数字,且数字不是0,则需要添加单位"十"、"百"、"千"
			if (i != numLen - 1 && num != 0) {
				result += hanArr[num] + unitArr[numLen - 2 - i];
			}
			// 否则不需要添加单位
			else {
				result += hanArr[num];
			}
		}
		return result;

	}

3.单位处理

最后,给汉字字符串加上人民币的单位。

代码语言:javascript
复制
private String[] unitArr_z = { "角", "分", "元", "万", "亿" };

/**
	 * 加上单位(角、分、元、万、亿),转换为人民币的表示方式
	 * 
	 * @param numStrs
	 *            整数数组
	 * @return 人民币读法的整数
	 */
	private String toRMBString(String[] numStrs) {
		String result = "";
		for (int i = 0; i < numStrs.length; i++) {
			result += numStrs[i] + unitArr_z[4 - i];
		}
		return result;

	}

这里还有很多问题没有考虑到,比如,如何拆分整数部分,如何根据整数部分的长度来匹配合适的单位(这里默认其长度固定,实际上,在银行收款账单的填写中,格式确实是固定的),负数情况,恰好为整数的情况。因此这个代码在后续仍然有可以迭代、完善的空间。

二、验证码

1、原理

验证码是我们常用的技术,其实现的核心逻辑其实就是java的基本数据类型的自动类型转换,字符串的拼接与强制类型转换,本文将通过这个例子帮大家巩固基础知识。

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

1.1 基本数据类型的自动类型转换

其实这就是相当于把一个小瓶子里的水倒入大瓶子里面,高级数据类型可以自动转换为低级的数据类型。

代码语言:javascript
复制
int a=6;
//int 类型可以自动转换为float类型
float b=a;

具体的自动转换如图

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

1.2.字符串的拼接

用“+”号可以进行字符串的拼接

代码语言:javascript
复制
public class StringLinkTest {
    public static void main(String[] args) {
        //输出7hello
        System.out.println(3 + 4 + "hello");
        //输出hello34
        System.out.println("hello" + 3 + 4);
    }
}

1.3.强制类型转换

把大瓶子里的水倒入小瓶子,水多到小瓶子装不了则溢出。

代码语言:javascript
复制
public class NarrowConservation {
    public static void main(String[] args) {
        int numa = 233;
        //强制类型转换语法
        byte numb = (byte) numa;
        //发生了内存溢出,输出-23
        System.out.println(numb);
    }
}

2、具体实现

数据类型的转换有一个具体应用就是生成常用的伪随机验证码。

代码语言:javascript
复制
public class RandomStr {
    public static void main(String[] args) {
        /*
         生成六位小写字母的伪随机代码
        */
        //定义result进行六位验证码字符串的拼接
        String result = "";
        //循环生成随机验证码
        for (int i = 0; i < 6; i++) {
           // 97-122之间的随机数,对应的是小写字母的ASCII码
            int intval = (int) (Math.random() * 26 + 97);
           //将随机数进行强制类型转换,转为char类型字符,并用“+”符号拼接字符串
            result = result + (char) intval;
        }
        System.out.println(result);
    }
​
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、数字转换为大写人民币表示形式
    • 1.整体思路
      • 2.小数处理
        • 3.单位处理
        • 二、验证码
          • 1、原理
            • 1.1 基本数据类型的自动类型转换
            • 1.2.字符串的拼接
            • 1.3.强制类型转换
          • 2、具体实现
          相关产品与服务
          验证码
          腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档