java程序练习:输入数字转换成中文输出(金额相关)
//题目,做一个输入金额数字,输出转换成中文的金额名称。
public class Test {
public static void main(String[] args) {
System.out.println("欢迎使用数字转换器(Designed by wujj)!!");
String in;
boolean isRunning = true;
Scanner scanner = new Scanner(System.in);
while (isRunning) {
System.out.println("请输入一串纯整数:");
in = scanner.next();
String input = in.trim();
if (!isNum(input)) {
System.out.println("输入类型错误!!!你应该输入12位以内纯正整数!!!");
continue;
} else {
System.out.println("转换成中文数字为:" + num2Ch(input));
}
System.out.println("是否继续查询? 1.是 2.不,谢谢");
int isContinue = scanner.nextInt();
if (isContinue == 1) {
continue;
} else if (isContinue == 2) {
System.out.println("程序结束!欢迎下次使用!!!");
isRunning = !isRunning;
} else {
System.out.println("指令输入错误,直接退出!!");
System.out.println("程序结束!欢迎下次使用!!!");
isRunning = !isRunning;
}
}
System.out.println("请输入任意数字退出控制台...");
in = scanner.next();
scanner.close();
}
private static String num2Ch(String input) {
input = Long.parseLong(input) + "";
if (input.equals("0")) {
return "零";
}
// int length = input.length();
// char[] arr1 = { 'O', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '百',
// '千', '万', '亿' };
// char[] arr2 = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '拾', '佰',
// '仟', '万', '亿' };
StringBuffer s = new StringBuffer();
switch (4 - (input.length() % 4)) {
case 1:
s = new StringBuffer("0").append(input);
break;
case 2:
s = new StringBuffer("00").append(input);
break;
case 3:
s = new StringBuffer("000").append(input);
break;
default:
s = new StringBuffer("").append(input);
}
String[] arr = new String[s.length() / 4];
for (int i = 0; i < s.length(); i = i + 4) {
if (i + 4 == s.length())
arr[i / 4] = s.toString().substring(i);
else
arr[i / 4] = s.toString().substring(i, i + 4);
}
StringBuffer output = new StringBuffer("");
switch (s.length() / 4) {
case 3:
output = output.append(trans(arr[s.length() / 4 - 3])).append("亿");
case 2:
if (Integer.parseInt(arr[s.length() / 4 - 2]) == 0 && Integer.parseInt(arr[s.length() / 4 - 3]) != 0)
output = output.append("零");
else
output = output.append(trans(arr[s.length() / 4 - 2])).append("万");
case 1:
output = output.append(trans(arr[s.length() / 4 - 1]));
break;
}
return output.toString();
}
// 四位数转换函数
private static String trans(String string) {
String s = Integer.parseInt(string) + "";
StringBuffer output = new StringBuffer("");
String[] arr = { "", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
// for (int i = 0; i < s.length(); i++) {
// if (s.charAt(i) != 0) {
// s = s.substring(i);
// break;
// }
// }
if ((Integer.parseInt(s) + "").equals("")) {
return "";
} else {
switch (s.length()) {
case 4:
if (Integer.parseInt(string.charAt(0) + "") == 0) {
output = output.append("零");
}else {
output = output.append(arr[Integer.parseInt(s.charAt(0) + "")]).append("千");
}
case 3:
if (Integer.parseInt(string.charAt(3) + "") != 0 && Integer.parseInt(string.charAt(1) + "") == 0 && Integer.parseInt(string.charAt(0) + "") != 0) {
output = output.append("零");
}else {
output = output.append(arr[Integer.parseInt(string.charAt(1) + "")]);
}
if (Integer.parseInt(string.charAt(1) + "") != 0) {
output = output.append("百");
}
case 2:
if (Integer.parseInt(string.charAt(3) + "") != 0 && Integer.parseInt(string.charAt(2) + "") == 0 && Integer.parseInt(string.charAt(1) + "") != 0
&& Integer.parseInt(string.charAt(0) + "") != 0) {
output = output.append("零");
}else{
output = output.append(arr[Integer.parseInt(string.charAt(2) + "")]);
}
if (Integer.parseInt(string.charAt(2) + "") != 0) {
output = output.append("十");
}
case 1:
if (Integer.parseInt(string.charAt(3) + "") != 0) {
output = output.append(arr[Integer.parseInt(string.charAt(3) + "")]);
}
break;
}
return output.toString();
}
}
// 判断是否是纯数字输入
private static boolean isNum(String s) {
String num = "0123456789";
int length = 0;
for (int i = 0; i < s.length(); i++) {
for (int j = 0; j < num.length(); j++) {
if (s.charAt(i) == num.charAt(j)) {
length++;
break;
}
}
}
return (s.trim().length() != 0 && length == s.length() && length <= 12 && length >= 0) ? true : false;
}
}
java程序练习:输入数字转换成中文输出(金额相关)的更多相关文章
- 在C#中将数字转换成中文
上篇我们讲了在MSSQL中将数字转换成中文,这篇我们讲讲在C#中将数字转换成中文 下篇将讲一下如何将金额转换成中文金额,废话不多说,具体代码如下: /// <summary> /// 数字 ...
- js 将数字转换成中文大写
//完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五. const toChinesNum = ...
- js将数字转换成中文
var _change = { ary0:["零", "一", "二", "三", ...
- JavaScript实现把数字转换成中文
/** * 数字转换汉字大写 * @constructor * 用法示例:new NumberToChinese(122222).toUpper(); new NumberToChinese(1222 ...
- 完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五
const toChineseNum = (num) => { const unit = ['', '十', '百', '千'] const counts = ['零', '一', '二', ' ...
- 在MSSQL中将数字转换成中文
具体代码如下: CREATE FUNCTION [dbo].[fn_NumberToChinese] (@number INT) ) AS BEGIN ); ); ); SET @res = ''; ...
- 比较java与c语言中数字转换成字符的不同
java java中将数字转换成字符非常方便,只要用一个"+"然后在跟一个空格行了.比如,你输入一个122 ,就会变成"122 ". import java.u ...
- 算法--java实现将数字转换成人民币大写(迅雷面试题)
今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...
- java算法:统计数字-将数字转换成字符串,然后使用字符串String.valueOf()方法进行判断
题目: 计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值. 样例 样例 1: 输入: k = 1, n = 1 输出: 1 解释: 在 [0, 1] 中,我们发现 1 出现了 ...
随机推荐
- 代码检查工具 Sonar 安装&使用
本文主要说明Sonar的安装方式并附上依赖安装包,本文目标只实现本地搭建测试的Sonar环境,以及本地的测试项目的非定制化扫描 本机测试环境:Win10-X64,.vs2017 依赖包: 1 ...
- 关于windows服务器wsus客户端配置的修改
本文环境如下: 服务器:Windows Server 2012 R2 Standard 由于公司服务器是加了域环境的,又需要将wsus客户端指向另一台wsus服务器,修改本地组策略.可能会被域控给修改 ...
- vue-cli3.0 vue组件发布到npm
一.创建项目 1.vue create xxx (使用的版本是3.1.0) 2.把src目录名称改为examples 3.新建文件夹packages 用来存放组件 4.比如:新建Button组件 in ...
- 树莓派3B+安装64位ubuntu系统和docker工具
想在树莓派3B上安装一些64位应用(例如64位JDK),因此首先要安装64位的操作系统,今天咱们就一起来实战: 原文地址:https://blog.csdn.net/boling_cavalry/ar ...
- Vue编写的页面部署到springboot网站项目中出现页面加载不全问题
问题描述: 在用Vue脚手架 编写出一个页面之后, 部署到后台项目中, 因为做的是一个页面 按理来说 怎么都能够在服务器上运行 , 我也在自己的node环境测试 , 在同学的springboot上运行 ...
- P2590 树的统计
一道树剖的模板题 首先,由于本人比较懒,就把单点修改写成了区间修改,其实也没有有多大区别(关键是我不会写单点修改QAQ) 不得不说,树剖的码量比较大,调了一上午才勉强调完. 这道题要求我们支持 单点修 ...
- 持续更新——dp的一些技巧
共菜鸡笔者看的--会慢慢更新,也请看到的大佬留意一眼,指出不足. 对于一些对部分点的二维\(dp\),状态从左上角继承而来时,对于一个点\((x,y)\),对它编号\(x*m+y\),按照这个顺序\( ...
- Python之路——变量
什么是变量 #变量即变化的量,核心是"变"与"量"二字,变即变化,量即衡量状态. 为什么要有变量 #程序执行的本质就是一系列状态的变化,变是程序执行的直接体现, ...
- postgreSQL与Kingbase 字符串裁剪区别
--postgreSQL postgres=# select substring('abcdefg',0,4); substring abc (1 行记录) postgres=# select sub ...
- python之线程池和进程池
线程池和进程池 一.池的概念 池是用来保证计算机硬件安全的情况下最大限度的利用计算机 它降低了程序的运行效率但是保证了计算机硬件的安全从而让你写的程序能够正常运行 ''' 无论是开设进程也好还是开设线 ...