本帖最后由 董月峰 于 2014-4-24 06:42 编辑
- /*
- * 2.从键盘接受一个数字,列出该数字的中文表示格式
- 例如:
- 键盘输入123,打印出一二三
- 键盘输入3103,打印出三一零三
- */
- import java.util.Scanner;
- public class Test2 {
- public static void main(String[] args)
- {
- Scanner in=new Scanner(System.in);
- System.out.println("请输入数字");
- int number=in.nextInt();
- numCh(number);
- }
- /*
- * 解题思路,定义一个转换的函数numCh,先转换左边第一位,
- * 同时获取到数字的长度i+1[之后给数字+十百千万亿可用]
- * 第二位是用原数字-第一位*10的i次方然后
- * 再用用找第一位的方式弄出第二位来
- * 之后类推循环搞定,
- * void就省了return了
- */
- public static void numCh(int num)
- {
- int i;
- int m=num;
- char[] chs={'零','一','二','三',
- '四','五','六','七',
- '八','九'};
- // char[] arr={0,1,2,3,4,5,6,7,8,9};没用到
- for(i=0;num>10;i++)
- {
- num=(int)num/10;//将数字化为个位数并强制装换成整形得到左边第一个数字
- }
- System.out.print(chs[num]);
- // for循环找出了第一位,且知道了数字的长度为i+1
- // 下面用个while+for就行了,当然也可以用2个for嵌套
- while(i!=0)//i--直到找到个位为止
- {
- num=(int)(m-num*Math.pow(10,i));//新数字去掉第一位
- m=num;//得到少了左边第一位的数字
- for(int x=0;num>10;x++)
- {
- num=(int)num/10;
- }
- System.out.print(chs[num]);
- i--;
- }
-
-
- }
- }
复制代码
这个题目的java形式我做过:D |