看到有同学在问,感觉挺有意思的,自己写了下
方式一
运用 if 判断, switch语句,三元运算符(代替了 if 语句,更加美观)
要考虑以下几种情况:
100 - 一百
101 - 一百零一
110 - 一百一十
001 - 不在范围
1000 - 不在范围
public class MyClass {public static void main(String[] args) {getString(678);}private static void getString(int i){if (i > 999 || i< 100){System.out.println("请输入100~999的正整数");return;}int bai =i/100%10;int shi =i/10%10;int ge =i%10;String b = getToString(bai).equals("零") ? "" : getToString(bai)+"百";String s = getToString(shi);s = b.equals("") && s.equals("零") ? "" : s;String g = getToString(ge).equals("零") ? "" : getToString(ge);if(g.equals("")){s = s.equals("零") ? "" : s + "十";}else {s = s.equals("零") ? s : s + "十";}System.out.println(b+s+g);}private static String getToString(int i){String s = "";switch (i){case 0:s = "零";break;case 1:s = "一";break;case 2:s = "二";break;case 3:s = "三";break;case 4:s = "四";break;case 5:s = "五";break;case 6:s = "六";break;case 7:s = "七";break;case 8:s = "八";break;case 9:s = "九";break;}return s;}
}
方式二
这个方式是我网上找到的,但是有些问题(900输出九百零零),我自己稍微改了一下,加了注释
public class MyClass {public void convert(int number) {//限制输入内容if (number > 999 || number< 100){System.out.println("请输入100~999的正整数");return;}//数字对应的汉字String[] num = {"零","一","二","三","四","五","六","七","八","九"};//单位String[] unit = {"","十","百"};//将输入数字转换为字符串String result = String.valueOf(number);//将该字符串分割为数组存放char[] ch = CharArray();//结果 字符串String str = "";//获取数组长度int length = ch.length;//循环for (int i = 0; i < length; i++) {//拿到对应的数字int c = (int)ch[i]-48;//不为0时获取中文以及添加单位if(c != 0) {str += num[c]+unit[length-i-1];} else {//下一个数字判断,目的是避免出现 九百零零的情况if (i+1 < length) {//下一个数字int next = (int) ch[i + 1] - 48;//当下一个数字为0时添加空字符,也就是啥也不加,否则添加零if (next == 0) {str += "";} else {str += num[c];}}}}System.out.println(str);}@SuppressWarnings("resource")public static void main(String[] args) {new MyClass().convert(678);}}
以上两种方式亲测有效
本文发布于:2024-01-29 03:31:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170647030512402.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |