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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        键盘录入一个大于-1小于1000的正整数,将该整数转换成中文在控制台输出

12 个回复

正序浏览
package cn.itcast.test01;

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

public class Test {
        static Scanner sc = new Scanner(System.in);
        public static void main(String[] args) {
                while(true){
                        System.out.println("请输入一个-1到1000的正整数");
                        int num=sc.nextInt();
                        if(num<1000&&num>-1)
                                numToChina(num);
                        else
                                break;
                }
        }
        private static void numToChina(int num) {
                HashMap<Integer, String>map = new HashMap<Integer, String>();
                map.put(0, "零");
                map.put(1, "一");
                map.put(2, "二");
                map.put(3, "三");
                map.put(4, "四");
                map.put(5, "五");
                map.put(6, "六");
                map.put(7, "七");
                map.put(8, "八");
                map.put(9, "九");
                if(num<10)
                        System.out.println(map.get(num));
                else if(num>9&&num<100){
                        if(num%10==0)
                                System.out.println(map.get(num/10)+"十");
                        else
                                System.out.println(map.get(num/10)+"十"+map.get(num%10));
                }else if(num>99&&num<1000){
                        int b=num/100, s=(num/10)%10, g=num%10;
                        //十位个位都是0
                        if(s==0&&g==0)
                                System.out.println(map.get(b)+"百");
                        //十位不为0个位是0
                        else if(s!=0&&g==0)
                                System.out.println(map.get(b)+"百"+map.get(s)+"十");
                        //十位是0个位不是0
                        else if(s==0&&g!=0)
                                System.out.println(map.get(b)+"百零"+map.get(g));
                        //个位十位都不0
                        else
                                System.out.println(map.get(b)+"百"+map.get(s)+"十"+map.get(g));
                }
        }

}
回复 使用道具 举报
还有  分类可以分三类  应该好理解一些  
回复 使用道具 举报
import java.util.Scanner;

public class Test {

        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                while (true) {
                        System.out.println("请输入一个整数(1-1000):");
                        int num = sc.nextInt();
                        if (num < 10) {
                                System.out.println(getNum1(num));
                        } else if (num > 1000) {
                                System.out.println("对不起你的输入有误!");
                                break;
                        } else {
                                StringBuilder sb = getNum2(num);
                                System.out.println(sb);
                        }
                }
        }

        public static String getNum1(int num) {
                switch (num) {
                case 1:
                        return "一";
                case 2:
                        return "二";
                case 3:
                        return "三";
                case 4:
                        return "四";
                case 5:
                        return "五";
                case 6:
                        return "六";
                case 7:
                        return "七";
                case 8:
                        return "八";
                case 9:
                        return "九";
                case 0:
                        return "零";
                default:
                        System.out.println("你输入的不在范围内:");
                }
                return null;
        }

        public static StringBuilder getNum2(int num) {
                StringBuilder sb = new StringBuilder();
                if (num > 99) {
                        int bai = num / 100 % 10;
                        String b = getNum1(bai);
                        if ( !b.equals( "零")) {
                                sb.append(b + "百");
                        }
                }
                int shi = num / 10 % 10;
                String s = getNum1(shi);       
                int ge = num % 10;
                String g = getNum1(ge);
                if (!s.equals("零")) {
                        sb.append(s);
                        sb.append("十");
                } else if(!g.equals("零")){
                        sb.append("零");
                }
                if (!g.equals("零")) {
                        sb.append(g);
                }
                return sb;
        }
}

(方法getNum1()可以用数组,会在减少一些代码)
回复 使用道具 举报
小风车 发表于 2016-8-29 19:42
import java.util.HashMap;
import java.util.Scanner;
/*

经map集合换为char数组更简单!
回复 使用道具 举报
13411939415 发表于 2016-7-30 23:28
为什么做这么无聊的事呢。。。

道友,这是挑战啊!
回复 使用道具 举报
import java.util.HashMap;
import java.util.Scanner;
/*
1.键盘录入一个大于-1小于1000的正整数num,将该整数转换成汉字在控制台输出,转换的要求如下:
*/
public class YY {
        public static void main(String[] args) {
                HashMap<Integer, String>map=new HashMap<Integer, String>();
                map.put(-1,"负一");
                map.put(0, "零");
                map.put(1,"一");
                map.put(2,"二");
                map.put(3,"三");
                map.put(4,"四");
                map.put(5,"五");
                map.put(6,"六");
                map.put(7,"七");
                map.put(8,"八");
                map.put(9,"九");
                while(true){
                        Scanner sc=new Scanner(System.in);
                        int num=sc.nextInt();
                        if(num<10){
                                for (Integer key : map.keySet()) {
                                        if(key==num){
                                                String value=map.get(key);
                                                System.out.println(value);
                                        }
                                }
                        }else if(num<100){
                                int  num1= num/10;
                                int num2=num%10;
                                for (Integer key : map.keySet()) {
                                        if(key==num1){
                                                String value=map.get(key);
                                                System.out.print(value+"十");
                                        }
                                        if(key==num2){
                                                String value=map.get(key);
                                                System.out.print(value);
                                        }
                                }
                        }else if(num<1000){
                                int num0=num/100;
                                int num1=num/10%10;
                                int num2=num%10;
                                for (Integer key : map.keySet()) {
                                        if(key==num0){
                                                String value=map.get(key);
                                                System.out.print(value+"百");
                                        }
                                        if(key==num1){
                                                String value=map.get(key);
                                                System.out.print(value+"十");
                                        }
                                        if(key==num2){
                                                String value=map.get(key);
                                                System.out.print(value);
                                        }
                                }
                        }
                }
        }
}
回复 使用道具 举报
13411939415 发表于 2016-7-30 23:40
为什么我会陪你做这么无聊的事。。。。。
import java.util.Scanner;

额、考虑不周,在十位数case 0:那里改一下应该就好了  
if(bai != 0) {
        if(ge == 0) {
              System.out.print("");
        }else {
               System.out.print("零");
        }
}
回复 使用道具 举报
方法一:int a =(int) (Math.random()*1000)+1     方法二:Random r = new Random();  int a = r.nextInt(1000)+1
回复 使用道具 举报
为什么我会陪你做这么无聊的事。。。。。
import java.util.Scanner;

public class HanZi {

        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("输入一个大于1小于1000的整数");
                int num =sc.nextInt();
               
                int ge = num % 10;
                int shi = num / 10 %10;
                int bai = num / 100;
                switch(bai){
                case 0:
                        System.out.print("");
                        break;
                case 1:
                        System.out.print("一百");
                        break;
                case 2:
                        System.out.print("两百");
                        break;
                case 3:
                        System.out.print("三百");
                        break;
                case 4:
                        System.out.print("四百");
                        break;
                case 5:
                        System.out.print("五百");
                        break;
                case 6:
                        System.out.print("六百");
                        break;
                case 7:
                        System.out.print("七百");
                        break;
                case 8:
                        System.out.print("八百");
                        break;
                case 9:
                        System.out.print("九百");
                        break;
                }
               
                switch(shi){
                case 0:
                        if(bai != 0){
                                System.out.print("零");
                        }
                        break;
                case 1:
                        System.out.print("一十");
                        break;
                case 2:
                        System.out.print("二十");
                        break;
                case 3:
                        System.out.print("三十");
                        break;
                case 4:
                        System.out.print("四十");
                        break;
                case 5:
                        System.out.print("五十");
                        break;
                case 6:
                        System.out.print("六十");
                        break;
                case 7:
                        System.out.print("七十");
                        break;
                case 8:
                        System.out.print("八十");
                        break;
                case 9:
                        System.out.print("九十");
                        break;
                }
               
                switch(ge){
                case 0:
                        System.out.print("");
                        break;
                case 1:
                        System.out.print("一");
                        break;
                case 2:
                        System.out.print("二");
                        break;
                case 3:
                        System.out.print("三");
                        break;
                case 4:
                        System.out.print("四");
                        break;
                case 5:
                        System.out.print("五");
                        break;
                case 6:
                        System.out.print("六");
                        break;
                case 7:
                        System.out.print("七");
                        break;
                case 8:
                        System.out.print("八");
                        break;
                case 9:
                        System.out.print("九");
                        break;
                }
        }
}

点评

发现个Bug 你输入个900试试  发表于 2016-7-31 20:30
666  发表于 2016-7-31 20:23
回复 使用道具 举报
为什么做这么无聊的事呢。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马