黑马程序员技术交流社区

标题: 一道不会做的课后题 [打印本页]

作者: lizhao    时间: 2016-7-29 21:53
标题: 一道不会做的课后题
除非输入数字不在规定的范围,否则可以一直进行输入转换
        小于10,数字后不需要带单位
                大于9小于100,数字后需要带单位”十”
                大于99小于1000,数字后需要带单位”百”
                数字转换成中文样式如下:
                5        五
                15       一十五
                115      一百一十五
作者: xiaobokk    时间: 2016-7-30 00:29
在这里如果不超出范围的话,就不跳出循环,我们在这里使用的是while循环;当中有一个if..else判断,如果超出了范围使用break跳出;
然后通过if的嵌套使用来判定范围,如果在该范围的话然后输出相应的语句;
在if的语句体内使用%的方式来判断每一位上的数字,具体情况具体分析
通过char类型的一维数组来返回对应的汉字;
优化:如果是102  显示的是一百零十二
优化方案:通过一个if的判断来进行不同的输出




代码如下:
[Java] 纯文本查看 复制代码
import java.util.Scanner;
class Swap {
        public static void main(String[] args){
                Scanner sc = new Scanner(System.in);
                while(true){                                                //死循环,
                        System.out.println("请输入一个数:");
                        int x = sc.nextInt();                        //键盘录入数字
                        if(x>=0 & x< 1000){                                //判断在该范围内,进入
                                if(x < 10){                                        //0-9的范围
                                        System.out.println(x+"\t"+getNum(x));
                                }else if(x < 100){                        //10-99的范围
                                        int ge = x % 10;                //取个位数
                                        int shi = x / 10 % 10;        //取十位数
                                        System.out.println(x+"\t"+getNum(shi)+"十"+getNum(ge));
                                }else if(x < 1000){                        //100-999的范围
                                        int ge = x % 10;                //取个位
                                        int shi = x / 10 % 10;        //取十位数
                                        int bai = x / 100 % 10;        //取百位数
                                        if(shi==0){                                //为了人性化的阅读,将十位为零的情况分了出来
                                                System.out.println(x+"\t"+getNum(bai)+"百"+"零"+getNum(ge));       
                                        }else{
                                                System.out.println(x+"\t"+getNum(bai)+"百"+getNum(shi)+"十"+getNum(ge));
                                        }
                                       
                                }
                        }else{
                                break;
                        }
                       
                }
        }

        public static char getNum(int index){
                char[] arr = {'零','一','二','三','四','五','六','七','八','九'};
                return arr[index];
        }
}



希望可以帮助到你,应该是可以改进的,加油


作者: pwn582253080    时间: 2016-7-30 21:12
小叽叽{:2_31:}
作者: 骚动的石头    时间: 2016-7-30 21:59
xiaobokk 发表于 2016-7-30 00:29
在这里如果不超出范围的话,就不跳出循环,我们在这里使用的是while循环;当中有一个if..else判断,如果超出了 ...

机智6666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2