//题目,做一个输入金额数字,输出转换成中文的金额名称。

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程序练习:输入数字转换成中文输出(金额相关)的更多相关文章

  1. 在C#中将数字转换成中文

    上篇我们讲了在MSSQL中将数字转换成中文,这篇我们讲讲在C#中将数字转换成中文 下篇将讲一下如何将金额转换成中文金额,废话不多说,具体代码如下: /// <summary> /// 数字 ...

  2. js 将数字转换成中文大写

    //完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五. const toChinesNum = ...

  3. js将数字转换成中文

           var _change = {            ary0:["零", "一", "二", "三", ...

  4. JavaScript实现把数字转换成中文

    /** * 数字转换汉字大写 * @constructor * 用法示例:new NumberToChinese(122222).toUpper(); new NumberToChinese(1222 ...

  5. 完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五

    const toChineseNum = (num) => { const unit = ['', '十', '百', '千'] const counts = ['零', '一', '二', ' ...

  6. 在MSSQL中将数字转换成中文

    具体代码如下: CREATE FUNCTION [dbo].[fn_NumberToChinese] (@number INT) ) AS BEGIN ); ); ); SET @res = ''; ...

  7. 比较java与c语言中数字转换成字符的不同

    java java中将数字转换成字符非常方便,只要用一个"+"然后在跟一个空格行了.比如,你输入一个122 ,就会变成"122 ". import java.u ...

  8. 算法--java实现将数字转换成人民币大写(迅雷面试题)

    今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...

  9. java算法:统计数字-将数字转换成字符串,然后使用字符串String.valueOf()方法进行判断

    题目: 计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值. 样例 样例 1: 输入: k = 1, n = 1 输出: 1 解释: 在 [0, 1] 中,我们发现 1 出现了 ...

随机推荐

  1. 搭建 Spring 源码阅读环境

    前言 有一个Spring源码阅读环境是学习Spring的基础.笔者借鉴了网上很多搭建环境的方法,也尝试了很多,接下来总结两种个人认为比较简便实用的方法.读者可根据自己的需要自行选择. 方法一:搭建基础 ...

  2. Centos-当前登录用户信息- w who

    w who 显示当前登录系统的用户,但w显示的更为详细 who 相关参数 # 默认输出 用户名.登录终端.登录时间 -a 列出所有信息 -b    系统最近启动日期 -m   当前终端信息,相当于 w ...

  3. Leetcode-递归&分治

    50. Pow(x, n) https://leetcode-cn.com/problems/powx-n/ 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 说明: -100.0 < ...

  4. Java知识系统回顾整理01基础01第一个程序02命令行格式编译和执行Java程序

    一.先看运行效果 在控制台下运行第一个Java程序,可以看到输出了字符串 hello world 二.准备项目目录 通常都会在e: 创建一个project目录 在这个例子里,我们用的是e:/proje ...

  5. P 4315 月下毛景树

    题目描述 毛毛虫经过及时的变形,最终逃过的一劫,离开了菜妈的菜园. 毛毛虫经过千山万水,历尽千辛万苦,最后来到了小小的绍兴一中的校园里. 爬啊爬~爬啊爬毛毛虫爬到了一颗小小的"毛景树&quo ...

  6. tomcat:tomcat安装(在一台电脑上安装两个tomcat)

    1.安装前的说明 (1)在安装第二个tomcat之前,我们要知道安装一台tomcat的时候需要在电脑上添加两个系统变量 然后在path中配置: (2)这个时候我们就要思考了,当安装第二台服务器的时候首 ...

  7. 启动你的Android应用:运行设备模拟器和调试代码(第3部分)

    下载all source for Test Proj: Test.zip - 306 KB 文章指出 本文包含了我即将出版的新书<启动Android应用程序>中的第三章. 在我完成这本书之 ...

  8. 每日一题 LeetCode 491. 递增子序列 【递推】【递增子序列】【动态规划】

    题目链接 https://leetcode-cn.com/problems/increasing-subsequences/ 题目说明 题解 主要方法:递推:动态规划 解释说明: 数据表示:观察数据范 ...

  9. 多测师讲解 _接口自动化框架设计分层思想(001)_高级讲师肖sir

    第一层: 第二层:调用接口层 VOQGWBZYNBOAVZGE

  10. 关于.netMVC 出现@ViewBag 出现错误(波浪红线)的解决方法

    解决vs2015.vs2013解决mvc5 viewbag问题 1.关闭vs2015或者vs2013 打开我的电脑或者文件夹 2.打开我的电脑 在地址栏输入 %UserProfile%\AppData ...