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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Androiddgw

初级黑马

  • 黑马币:-4

  • 帖子:15

  • 精华:0

24黑马币
例如输入一个12345结果输出一万二千三百四十五.

最佳答案

查看完整内容

package com.itheima.test; import java.util.TreeMap; public class Test1 { /** 需求:将一个int类型的5位数转换成大写的输出 思路: 1,因为是整数,无非就是0-9之间的数,那么可以吧0-9之间的数存到一个map集合中,键对的是 int类型的数,值对应的是int类型的大写 2,拿到每一位上的数后,通过键把map集合中的值给取出, 存到一个StringBuilder中. */ public static void main(String[] args) { int num=12345; ...

9 个回复

倒序浏览
package com.itheima.test;

import java.util.TreeMap;

public class Test1 {

        /**
         需求:将一个int类型的5位数转换成大写的输出
         思路:
                 1,因为是整数,无非就是0-9之间的数,那么可以吧0-9之间的数存到一个map集合中,键对的是
         int类型的数,值对应的是int类型的大写
         
                 2,拿到每一位上的数后,通过键把map集合中的值给取出,
        存到一个StringBuilder中.
         */
        public static void main(String[] args) {
                int num=12345;
                TreeMap<Integer,String> tm = new TreeMap<Integer,String>();
                //0-9之间的数存到一个map集合中
                tm.put(0, "零");
                tm.put(1, "一");
                tm.put(2, "二");
                tm.put(3, "三");
                tm.put(4, "四");
                tm.put(5, "五");
                tm.put(6, "六");
                tm.put(7, "七");
                tm.put(8, "八");
                tm.put(9, "九");
                num2String(num,tm);
        }

        public static void num2String(int num, TreeMap<Integer, String> tm) {
                StringBuilder sb= new StringBuilder();
                sb.append(num/10000==0?"":(tm.get(num/10000%10)+"万")). //得到万位上的数,数字/10000,然后与10取余
                append(num/1000==0?"":(tm.get(num/1000%10)+"千")).                //得到千位上的数,数字/1000,与10取余
                append(num/100==0?"":(tm.get(num/100%10)+"百")).                //得到百位上的数,数字/100,与10取余
                append(num/10==0?"":(tm.get(num/10%10)+"十")).                        //得到十位上的数,数字/10,与10取余
                append(num/1==0?"":(tm.get(num%10)+""));                                //得到个位上的数,与10取余
                System.out.println(sb.toString());
        }
}

点评

有注释和思路,不过确实存在点问题  发表于 2016-9-19 16:25
程序中需要把各个位上是零的情况单独考虑,如果输入带零的,你可以进一步考虑一下  发表于 2016-9-19 11:47
回复 使用道具 举报
package demo;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

//输入一个五位数,输出大写,如果是五位数可以一直输出大写,如果输入的不是五位数则退出程序
public class Test {

        public static void main(String[] args) {

                Map<Integer,String> hm = new HashMap<Integer,String>();
                hm.put(1, "一");
                hm.put(2, "二");
                hm.put(3, "三");
                hm.put(4, "四");
                hm.put(5, "五");
                hm.put(6, "六");
                hm.put(7, "七");
                hm.put(8, "八");
                hm.put(9, "九");
                Scanner sc = new Scanner(System.in);
                while(true) {
                        System.out.println("请输入要转化的数字(10000-99999):");
                        int a = sc.nextInt();
                         if (a>9999 && a< 100000) {
                                 
                                int ge = a%10;
                                int shi = a/10%10;
                                int bai = a/10/10%10;
                                int qian = a/10/10/10%10;
                                int wan = a/10/10/10/10%10;
                               
                                String ger = "";
                                String shir = "零";
                                String bair = "零";
                                String qianr = "零";
                                String wanr = hm.get(wan)+"万";
                               
                                if(ge != 0) {
                                         ger = hm.get(ge);       
                                }
                                if(shi != 0) {
                                        shir = hm.get(shi)+"十";
                                }
                                if(bai != 0) {
                                        bair = hm.get(bai)+"百";
                                }
                                if(qian != 0) {
                                        qianr = hm.get(qian)+"千";
                                }
                                 
                                if(a%10000 == 0 ) {
                                        System.out.println(wanr);
                                }
                                else if(a%1000 == 0){
                                        System.out.println(wanr+qianr);
                                }
                                else if(a%100 == 0) {
                                        System.out.println(wanr+qianr+bair);
                                }
                                else if(a%10 == 0) {
                                        System.out.println(wanr+qianr+bair+shir);
                                }
                                else {
                                String str = wanr+qianr+bair+shir+ger;
                                System.out.println(str);
                                }
                         }
                        else {
                                System.out.println("你输入的数据不再范围内!");
                                System.exit(0);
                               
                        }
                }
        }

}
回复 使用道具 举报
18001105207 发表于 2016-9-19 10:23
package demo;

import java.util.HashMap;

           静静的
回复 使用道具 举报
public class Test5 {

        public static void main(String[] args) {
                //查表法
                TreeMap<Character, String> tm = new TreeMap<>();
                TreeMap<Integer, String> mp = new TreeMap<>();
                //也可键盘录入
                int num = 54321;
                //Map 集合键值对,表1
                tm.put('0', "零");
                tm.put('1', "一");
                tm.put('2', "二");
                tm.put('3', "三");
                tm.put('4', "四");
                tm.put('5', "五");
                tm.put('6', "六");
                tm.put('7', "七");
                tm.put('8', "八");
                tm.put('9', "九");
                //表2  如果超过5位数  直接在表2增加就行
                mp.put(1, "");
                mp.put(2, "十");
                mp.put(3, "百");
                mp.put(4, "千");
                mp.put(5, "万");
                //建立缓冲区
                 StringBuilder sb = new StringBuilder();
                 //转成数字
                 String s = String.valueOf(num);
                 //查表法
                 //反着遍历是因为,最后一个数永远是固定的个位数
                 for (int i = s.length()-1;  i >= 0; i--) {
                        sb.append(mp.get(s.length()-i));
                        sb.append(tm.get(s.charAt(i)));
                }
                 //反转
                sb.reverse();
                System.out.println(sb);

        }

}
回复 使用道具 举报
写的不错!!!
回复 使用道具 举报
package com.itheima.day05;
import java.util.Scanner;
/*
* 将一个int类型的5位数转换成大写的输出
* 例如:输入一个12345结果输出一万二千三百四十五
* */
public class TranInt {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个五位数:");
                int n = sc.nextInt();
                String s = String.valueOf(n);
                char[] c = s.toCharArray();       
                char[] c1 ={'万','千','百','十',' '};
                StringBuffer sb = new StringBuffer();
                for(int i = 0;i < c.length;i++) {
                        int index = c[i] - 48;
                        if(index == 0){
                                continue;
                        }
                        char temp = chinese(index);
                        sb.append(temp);
                        sb.append(c1[i]);
                }
                System.out.print(sb);
        }
        //通过查表法查找元素
        public static char chinese(int index) {
                char[] c1 = {' ','一','二','三','四','五','六','七','八','九'};
                return c1[index];
        }
}
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马