A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 愤怒的大飞机 中级黑马   /  2017-2-10 16:54  /  1456 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

将数字转成人民币读法的字符串,要求如下:
1.        键盘录入一个整数,如果整数在0-999(包含0和999)之间,将该整数转换成人民币读法的字符串并在控制台打印后将该字符串存储起来,
如果输入的整数不在0-999区间内就结束程序并在控制台提示,要求:结束程序之前将之前存储的字符串在全部控制台打印输出
2.        人民币读法格式:十位数后面加单元“拾”,百位数后面加单元“佰”,0-9之间的大写字如下:"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
例:键盘录入567在控制台打印:伍佰陆拾柒
我做的太复杂,用了好多if ..else语句,有简单点的写法吗?

8 个回复

倒序浏览
百度里面有,用数组来做
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
考试题就是这个,做了好久,先用三个map 映射汉字零到玖,和拾佰仟,万亿。遍历金额转换成汉字,再用正则替换成标准格式。
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
本帖最后由 Jet'aime 于 2017-2-10 21:18 编辑

[Java] 纯文本查看 复制代码
	public static String changeMoney() {
		//定义数组存储零到玖,跟下标对应
		String[] numArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
		//初始化键盘录入值
		int money = -1;
		//录入整数
		while (true) {
			System.out.println("请输入一个0-999之间的整数:");
			Scanner sc = new Scanner(System.in);
			try {
				money = sc.nextInt();
			} catch (Exception e) {
				System.out.println("请输入数字!");
				continue;
			}
			if (money >= 0 && money <= 999) {
				break;
			}
		}
		///分别获取录入数字的个位十位和百位
		int ge = money % 10;
		int shi = money / 10 % 10;
		int bai = money / 100;
		//找到每位数字对应的汉字并拼接
		String str = "";
		if (bai != 0) {
			str = numArr[bai] + "佰" + numArr[shi] + "拾" + numArr[ge];
		} else if (shi != 0) {
			str = numArr[shi] + "拾" + numArr[ge];
		} else if (ge != 0) {
			str = numArr[ge];
		} else {
			str = "零";
		}
		return str;
	}
回复 使用道具 举报
sigod 中级黑马 2017-2-10 23:52:33
7#
支持楼上的。
回复 使用道具 举报
zmanx 中级黑马 2017-2-11 00:27:55
8#
回复 使用道具 举报
Jet'aime 发表于 2017-2-10 21:17
[mw_shl_code=java,true]        public static String changeMoney() {
                //定义数组存储零到玖,跟下标对应
                St ...

我想到一个更简单的,明天发
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马