黑马程序员技术交流社区
标题:
需求:将一个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