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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lizhao 中级黑马   /  2016-7-29 21:53  /  471 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

除非输入数字不在规定的范围,否则可以一直进行输入转换
        小于10,数字后不需要带单位
                大于9小于100,数字后需要带单位”十”
                大于99小于1000,数字后需要带单位”百”
                数字转换成中文样式如下:
                5        五
                15       一十五
                115      一百一十五

3 个回复

倒序浏览
在这里如果不超出范围的话,就不跳出循环,我们在这里使用的是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];
	}
}



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

回复 使用道具 举报
小叽叽{:2_31:}
回复 使用道具 举报
xiaobokk 发表于 2016-7-30 00:29
在这里如果不超出范围的话,就不跳出循环,我们在这里使用的是while循环;当中有一个if..else判断,如果超出了 ...

机智6666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马