数字转中文 ,中文转数字,怎么转?

dsdfgh 发布于 2014/03/22 19:11
阅读 1K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

用JAVA从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
加载中
0
canghailan
canghailan
public static String toChineseString(int number) {
	String digits = "零一二三四五六七八九";
	String string = Integer.toString(number);
	StringBuilder buffer = new StringBuilder(string.length());
	for (int i = 0; i < string.length(); ++i) {
		buffer.append(digits.charAt(string.charAt(i) - '0'));
	}
	return buffer.toString();
}



canghailan
canghailan
回复 @余炳高 : 我在下面发一个更清晰的重构版本,逻辑更清楚些
canghailan
canghailan
回复 @余炳高 : 就是将“0123456789”转为“零一二三四五六七八九”,如'1'-'0'=1,digits.charAt(1)是'一'
dsdfgh
dsdfgh
数字转中文效果出来了 buffer.append(digits.charAt(string.charAt(i) - '0'));这句话看不懂 学习JAVA没多久
0
刘学炜
刘学炜
做个映射吧,Java的switch支持字符串类型了。
或者把数据放到map
0
帆船
帆船
数字转字符串,切分为char,转换成中文数字,再拼接成字符串输出——这样不行的吗?
0
刘学炜
刘学炜

引用来自“canghailan”的答案

public static String toChineseString(int number) {
	String digits = "零一二三四五六七八九";
	String string = Integer.toString(number);
	StringBuilder buffer = new StringBuilder(string.length());
	for (int i = 0; i < string.length(); ++i) {
		buffer.append(digits.charAt(string.charAt(i) - '0'));
	}
	return buffer.toString();
}



好人啊,居然还提供详细代码
0
仪山湖
仪山湖
不予以思考不是好程序员的特征
0
dsdfgh
dsdfgh

引用来自“canghailan”的答案

public static String toChineseString(int number) {
	String digits = "零一二三四五六七八九";
	String string = Integer.toString(number);
	StringBuilder buffer = new StringBuilder(string.length());
	for (int i = 0; i < string.length(); ++i) {
		buffer.append(digits.charAt(string.charAt(i) - '0'));
	}
	return buffer.toString();
}



谢谢
0
canghailan
canghailan
public static String toChineseString(int number) {
	String string = Integer.toString(number);
	StringBuilder buffer = new StringBuilder(string.length());
	for (int i = 0; i < string.length(); ++i) {
		buffer.append(arabicToChinese(string.charAt(i)));
	}
	return buffer.toString();
}

public static char arabicToChinese(char digit) {
	switch (digit) {
	case '0':
		return '零';
	case '1':
		return '一';
	case '2':
		return '二';
	case '3':
		return '三';
	case '4':
		return '四';
	case '5':
		return '五';
	case '6':
		return '六';
	case '7':
		return '七';
	case '8':
		return '八';
	case '9':
		return '九';
	default:
		assert false;
		return '\0';
	}
	// 这条switch等价于下面这条语句
	// return "零一二三四五六七八九".charAt(digit - '0');
}



OSCHINA
登录后可查看更多优质内容
返回顶部
顶部