黑马程序员技术交流社区

标题: 需求:将一个int类型的5位数转换成大写的输出 [打印本页]

作者: Androiddgw    时间: 2016-9-19 09:37
标题: 需求:将一个int类型的5位数转换成大写的输出
例如输入一个12345结果输出一万二千三百四十五.

作者: 黑马豹仔    时间: 2016-9-19 09:37
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());
        }
}

作者: 18001105207    时间: 2016-9-19 10:23
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 19:48
18001105207 发表于 2016-9-19 10:23
package demo;

import java.util.HashMap;

           静静的
作者: flfjewffg    时间: 2016-9-21 18:03
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);

        }

}
作者: muxiaomo    时间: 2016-9-24 23:17
写的不错!!!
作者: gczsjj    时间: 2017-1-5 22:22
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];
        }
}





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