疯狂Java讲义第四章练习2.浮点数转换人民币读法

一篇关于使用Java编程将浮点数转换为人民币读法的练习记录,旨在提升基础和编程技能。

package org.crazy.ch4;

import java.util.Scanner;

public class TurnRmbReading {

	private static char[] hanArr = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒',
			'捌', '玖' };
	private static char[] zhengUnitArr = { '十', '百', '千', '万', '亿' };
	private static char[] monUnitArr = { '角', '分', '元' };

	private static boolean toZore = false;

	public static StringBuffer toHanSiweiStr(String siwei) {
		int strLen = siwei.length();

		StringBuffer result = new StringBuffer();
		for (int i = 0; i < strLen; i++) {
			int num = siwei.charAt(i) - 48;
			if (i != strLen - 1) { // 当前出的的是否为个位
				if (num == 0 && toZore == false) {
					toZore = true;
					continue;
				} else if (num == 0 && toZore == true) {
					continue;
				} else if (num != 0 && toZore == true) {
					toZore = false;
					result.append(hanArr[0]).append(hanArr[num])
							.append(zhengUnitArr[strLen - 2 - i]);
				} else
					result.append(hanArr[num]).append(
							zhengUnitArr[strLen - 2 - i]);
			} else if (i == strLen - 1) {
				if (num == 0)
					break;
				else if (toZore && num != 0) {
					toZore = false;
					result.append(hanArr[0]).append(hanArr[num]);
				} else
					result.append(hanArr[num]);
			}
		}
		return result;
	}

	public static String toHanZhengStr(String zhengshu) {
		int strLen = zhengshu.length();
		StringBuffer toHan = new StringBuffer();
		StringBuffer tmp;
		boolean startZore = false;

		if (strLen > 12) {
			return "浮点数超过长度,无法转换!";
		}
		if ("0".equals(zhengshu.charAt(0)) || (zhengshu.charAt(0) - 48) == 0)
			startZore = true;

		if (strLen >= 9) { // 亿以上
			tmp = toHanSiweiStr(zhengshu.substring(0, strLen - 8));
			if (tmp.length() >= 1)
				toHan.append(tmp).append(zhengUnitArr[4]);
		}
		if (strLen >= 5) { // 万以上
			if (strLen >= 9)
				tmp = toHanSiweiStr(zhengshu.substring(strLen - 8, strLen - 4));
			else
				tmp = toHanSiweiStr(zhengshu.substring(0, strLen - 4));
			if (tmp.length() >= 1)
				toHan.append(tmp).append(zhengUnitArr[3]);
		}
		if (strLen >= 1) {
			if (strLen >= 5)
				toHan.append(toHanSiweiStr(zhengshu.substring(strLen - 4,
						strLen)));
			else
				toHan.append(toHanSiweiStr(zhengshu.substring(0, strLen)));
		}
		if (toHan.length() <= 0)
			return toHan.toString();
		else {
			toHan.append(monUnitArr[2]);
			if (startZore == true)
				return toHan.substring(1, toHan.length());
			else
				return toHan.toString();
		}
	}

	public static String toHanXiaoStr(String xiaoshu) {
		int strLen = xiaoshu.length();
		StringBuffer toHan = new StringBuffer();

		if (strLen == 0) {
			return null;
		} else if (strLen == 1) {
			int num = xiaoshu.charAt(0) - 48;
			if (num == 0)
				return null;
			else
				toHan.append(hanArr[num]).append(monUnitArr[0]);
		}

		for (int i = 0; i < 2; i++) {
			int num = xiaoshu.charAt(i) - 48;
			switch (i) {
			case 0:
				if (num == 0) {
					toZore = true;
					continue;
				} else if (num != 0 && toZore == true) {
					toZore = false;
					toHan.append(hanArr[0]).append(hanArr[num])
							.append(monUnitArr[i]);
					continue;
				} else if (num != 0 && toZore == false) {
					toHan.append(hanArr[num]).append(monUnitArr[i]);
					continue;
				}
			case 1:
				if (num == 0) {
					toZore = false;
					continue;
				} else if (num != 0 && toZore == true) {
					toHan.append(hanArr[0]).append(hanArr[num])
							.append(monUnitArr[i]);
					continue;
				}
				else if (num != 0 && toZore == false) {
					toHan.append(hanArr[num]).append(monUnitArr[i]);
					continue;
				}
			default:
				continue;
			}
		}

		return toHan.toString();
	}

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String num = scanner.next();
		String[] numArr = num.split("\\."); // 需要加转义符的有:"\\.","\\|"

		StringBuffer result = new StringBuffer();
		String tmp;

		for (int i = 0; i < numArr.length; i++) {
			switch (i) {
			case 0:
				tmp = toHanZhengStr(numArr[i]);
				if (tmp != null && !"".equals(tmp))
					result.append(tmp);
				continue;
			case 1:
				tmp = toHanXiaoStr(numArr[i]);
				if (tmp != null && !"".equals(tmp))
					result.append(tmp);
				continue;
			default:
				continue;
			}

		}
		System.out.println(result.toString());
	}
}



加入为了巩固Java的基础和锻炼编程能力,所做的练习,记录下来留作日后回看。

标题基于Python的汽车之家网站舆情分析系统研究AI更换标题第1章引言阐述汽车之家网站舆情分析的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义说明汽车之家网站舆情分析对汽车行业及消费者的重要性。1.2国内外研究现状概述国内外在汽车舆情分析领域的研究进展与成果。1.3论文方法及创新点介绍本文采用的研究方法及相较于前人的创新之处。第2章相关理论总结和评述舆情分析、Python编程及网络爬虫相关理论。2.1舆情分析理论阐述舆情分析的基本概念、流程及关键技术。2.2Python编程基础介绍Python语言特点及其在数据分析中的应用。2.3网络爬虫技术说明网络爬虫的原理及在舆情数据收集中的应用。第3章系统设计详细描述基于Python的汽车之家网站舆情分析系统的设计方案。3.1系统架构设计给出系统的整体架构,包括数据收集、处理、分析及展示模块。3.2数据收集模块设计介绍如何利用网络爬虫技术收集汽车之家网站的舆情数据。3.3数据处理与分析模块设计阐述数据处理流程及舆情分析算法的选择与实现。第4章系统实现与测试介绍系统的实现过程及测试方法,确保系统稳定可靠。4.1系统实现环境列出系统实现所需的软件、硬件环境及开发工具。4.2系统实现过程详细描述系统各模块的实现步骤及代码实现细节。4.3系统测试方法介绍系统测试的方法、测试用例及测试结果分析。第5章研究结果与分析呈现系统运行结果,分析舆情数据,提出见解。5.1舆情数据可视化展示通过图表等形式展示舆情数据的分布、趋势等特征。5.2舆情分析结果解读对舆情分析结果进行解读,提出对汽车行业的见解。5.3对比方法分析将本系统与其他舆情分析系统进行对比,分析优劣。第6章结论与展望总结研究成果,提出未来研究方向。6.1研究结论概括本文的主要研究成果及对汽车之家网站舆情分析的贡献。6.2展望指出系统存在的不足及未来改进方向,展望舆情
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值