• 《Java练习题》Java习题集二


    编程合集: https://www.cnblogs.com/jssj/p/12002760.html

    Java总结:https://www.cnblogs.com/jssj/p/11146205.html

    【程序11】
    题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    /**
     * 【程序11】
     * 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
     */
    public class Subject11 {
        public static void main(String[] args) {
            FormThreeNum();
        }
    
        public static void FormThreeNum(){
            for (int i = 1; i <= 4; i++) {
                for (int j = 1; j <= 4; j++) {
                    for (int k = 1; k <= 4; k++) {
                        if(i != j && j!= k && k != i){
                            System.out.println("1,2,3,4可以组成的三位数:"+i+j+k);
                        }
                    }
                }
            }
        }
    }

    运行结果:

    。。。。。。。

    【程序12】
    题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

    /**
     * 【程序12】
     * 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,
     * 低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;
     * 40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,
     * 高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
     */
    public class Subject12 {
    
        public static void main(String[] args) {
            System.out.println("请输入您的业绩:");
            Scanner scanner = new Scanner(System.in);
            double profit= scanner.nextDouble();
            System.out.println("您得到的提成为:"+premium(profit));
        }
    
        public static double premium(double profit){
            double premium = 0;
            if(profit <= 100000){
                premium = profit*0.1;
            }else if(profit > 100000 && profit <= 200000){
                premium = (profit - 100000) * 0.075 + premium(100000);
            }else if(profit > 200000 && profit <= 400000){
                premium = (profit - 200000) * 0.05 + premium(200000);
            }else if(profit > 400000 && profit <= 600000){
                premium = (profit - 400000) * 0.03 + premium(400000);
            }else if(profit > 600000 && profit <= 1000000){
                premium = (profit - 600000) * 0.015 + premium(600000);
            }else{
                premium = (profit - 1000000) * 0.01 + premium(1000000);
            }
            return premium;
        }
    }

    运行结果:

    【程序13】
    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    /**
     * 【程序13】
     * 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
     */
    public class Subject13 {
    
        public static void main(String[] args) {
            squareNum();
        }
        public static void squareNum(){
            int i = 1;
            while(true){
                int tmp = i*i;
                int z = 1;
                while(true){
                    if(z*z - tmp >=168){
                        break;
                    }
                    z++;
                }
                if(z*z - i*i == 168 && (z*z - 168-100)>=0){
                    System.out.println("一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,则该数为:"+(z*z - 168-100));
                    break;
                }else{
                    i++;
                }
            }
        }
    }

    运行结果:

    【程序14】
    题目:输入某年某月某日,判断这一天是这一年的第几天?

    /**
     * 【程序14】
     * 题目:输入某年某月某日,判断这一天是这一年的第几天?
     */
    public class Subject14 {
        public static void main(String[] args) {
            dayNum("2018-03-08");
            dayNum("1900-03-08");
            dayNum("2000-03-08");
            dayNum("2020-03-08");
            dayNum("2018-02-08");
            dayNum("1900-02-08");
            dayNum("2000-02-08");
            dayNum("2020-02-08");
    
        }
    
        public static void dayNum(String date){
            String[] dateStr = date.split("-");
            int dayNum = 0;
            if(leapYear(dateStr[0])){
                dayNum = month(dateStr[1] ,"1") + Integer.parseInt(dateStr[2]);
            }else{
                dayNum = month(dateStr[1] ,"0") + Integer.parseInt(dateStr[2]);
            }
            System.out.println("输入日期为该("+dateStr[0]+")年的第"+dayNum+"天");
        }
    
        /**
         * 根据年份判断闰年还是普通年
         * @param year
         * @return
         */
        public static boolean leapYear(String year){
            int years = Integer.parseInt(year);
            if((years%4 ==0 && years%100!=0) || years%400 == 0){
                return true;
            }
            return false;
        }
    
        /**
         * 根据月份获取天数
         * @param month
         * @param flag
         * @return
         */
        public static int month(String month,String flag){
            int dayNum = 0;
            switch (month){
                case "01": dayNum = 0; break;
                case "02": dayNum = month("01", flag) +31; break;
                case "03":
                    if("0".equals(flag)) {
                        dayNum = month("02", flag) + 28;
                    }else {
                        dayNum = month("02", flag) + 29;
                    }
                    break;
                case "04": dayNum = month("03", flag) + 31; break;
                case "05": dayNum = month("04", flag) + 30; break;
                case "06": dayNum = month("05", flag) + 31; break;
                case "07": dayNum = month("06", flag) + 30; break;
                case "08": dayNum = month("07", flag) + 31; break;
                case "09": dayNum = month("08", flag) + 31; break;
                case "10": dayNum = month("09", flag) + 30; break;
                case "11": dayNum = month("10", flag) + 31; break;
                case "12": dayNum = month("11", flag) + 30; break;
            }
            return dayNum;
        }
    }

    运行结果:

    【程序15】
    题目:输入三个整数x,y,z,请把这三个数由小到大输出

    /**
     * 【程序15】
     * 题目:输入三个整数x,y,z,请把这三个数由小到大输出
     */
    public class Subject15 {
        public static void main(String[] args) {
            minNum(7,3,5);
        }
    
        /**
         * 获取最小数
         * @param a
         * @param b
         * @param c
         */
        public static void minNum(int a,int b,int c){
            int tmp = 0;
            int[] nums= {a,b,c};
            int[] numTmp = new int[3];
            for(int i=0 ; i<2;i++){
                for (int j = i+1; j <= 2; j++) {
                    if(nums[j] < nums[i]){
                        tmp = nums[j];
                        nums[j] = nums[i];
                        nums[i] = tmp;
                    }
                }
            }
            for (int i = 0; i < nums.length ; i++) {
                System.out.println(nums[i]);
            }
        }
    }

    运行结果:

    【程序16】
    题目:输出9*9口诀。

    /**
     * 【程序16】
     * 题目:输出9*9口诀。
     */
    public class Subject16 {
    
        public static void main(String[] args) {
    
            for (int i = 1; i <= 9 ; i++) {
                for (int j = 1; j <= i ; j++) {
                    System.out.print(i+"*"+j+"="+i*j+" ");
                }
                System.out.println("");
            }
        }
    }

    运行结果:

    【程序17】
    题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

    /**
     * 【程序17】
     * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,
     * 又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
     */
    public class Subject17 {
        public static void main(String[] args) {
            System.out.println(peachNum(10));
        }
    
        public static int peachNum(int days){
            if(days == 1){
                return 1;
            }else if(days > 1){
                return (peachNum(days-1) + 1) * 2;
            }
            return 0;
        }
    }

    运行结果:

    【程序18】
    题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
    除了题目本身还扩展实现了,总共可以出现多少种组合

    /**
     * 【程序18】
     * 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。
     * a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
     *
     * 除了题目本身还扩展实现了,总共可以出现多少种组合
     */
    public class Subject18 {
        public static void main(String[] args) {
    
            List<Map> list = new ArrayList<>();
            Map<Character, Character> map = new HashMap<>();
            List<Character> a = new ArrayList<>();
            a.add('a');
            a.add('b');
            a.add('c');
            List<Character> b = new ArrayList<>();
            b.add('x');
            b.add('y');
            b.add('z');
    
            group(a,b,map,list);
    
            for(Map<Character, Character> maptmp:list){
                boolean flag = true;
                for (Map.Entry<Character, Character> entry : maptmp.entrySet()) {
                    /***将不满足条件的情况去除掉*****/
                     if(((entry.getKey() =='a' && 'x' == entry.getValue()) || ((entry.getKey() =='c' && 'x' == entry.getValue()) || (entry.getKey() =='c' && 'z' == entry.getValue())))){
                         flag = false;
                         break;
                    }
                 }
                 if(flag){
                     System.out.println("对决名单为:");
                     for (Map.Entry<Character, Character> entry : maptmp.entrySet()) {
                         System.out.println("选手:"+entry.getKey() + " ----------VS------------ " + "选手:"+ entry.getValue());
                     }
                 }
            }
    
        }
    
        /**
         * 将全部分组情况展示出来
         * @param a
         * @param b
         * @param map
         * @param list
         */
        public static void group(List<Character> a,List<Character> b,Map<Character, Character> map,List<Map> list){
            for (int i = 0; i < a.size(); i++) {
                if (i == 1) {
                    break;
                }
                for (int j = 0; j < a.size(); j++) {
                    map.put(a.get(i), b.get(j));
                    //System.out.println(a.get(i) + "----" + b.get(j));
                    if(a.size() == 1){
                        Map<Character, Character> mapTrue = new HashMap<>();
                        mapCopy(map,mapTrue);
                        list.add(mapTrue);
                        //System.out.println(mapTrue);
                    }
                    List<Character> tmp1 = new ArrayList<>();
                    List<Character> tmp2 = new ArrayList<>();
                    listCopy(a,tmp1);
                    listCopy(b,tmp2);
    
                    tmp1.remove(a.get(i));
                    tmp2.remove(b.get(j));
                    group(tmp1,tmp2,map,list);
                }
            }
        }
    
        /**
         * 将paramsMap内容复制到resultMap中
         * @param paramsMap
         * @param resultMap
         */
        public static void mapCopy(Map paramsMap, Map resultMap) {
            if (resultMap == null) resultMap = new HashMap();
            if (paramsMap == null) return;
    
            Iterator it = paramsMap.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry entry = (Map.Entry) it.next();
                Object key = entry.getKey();
                resultMap.put(key, paramsMap.get(key) != null ? paramsMap.get(key) : "");
            }
        }
    
        /**
         * 将paramsList内容复制到resultList中
         * @param paramsList
         * @param resultList
         */
        public static void listCopy(List paramsList,List resultList){
            for (int k = 0; k < paramsList.size(); k++) {
                resultList.add(paramsList.get(k));
            }
        }
    }

    运行结果:

    【程序19】
    题目:打印出如下图案(菱形)

    /**
     * 【程序19】
     * 题目:打印出如下图案(菱形)
     */
    public class Subject19 {
        public static void main(String[] args) {
            diamond(6);
        }
    
        /**
         * 打印菱形
         */
        public static void diamond(int a){
            for (int i = a; i > 0; i--) {
                for (int j = 0; j < i; j++) {
                    System.out.print(" ");
                }
                for (int j = 0; j < a-i; j++) {
                    System.out.print("* ");
                }
                System.out.println("");
            }
    
            for (int i = 0; i < a ; i++) {
                for (int j = 0; j < i; j++) {
                    System.out.print(" ");
                }
                for (int j = 0; j < a-i; j++) {
                    System.out.print("* ");
                }
                System.out.println("");
            }
        }
    }

    运行结果:

    【程序20】
    题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

    /**
     * 【程序20】
     * 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
     */
    public class Subject20 {
    
        public static void main(String[] args) {
            double sumNum = sum(20);
            System.out.println("前20规律数之和为:"+sumNum);
        }
    
        /**
         * 前num的数的和
         * @param num
         */
        public static double sum(int num){
            if(num == 1){
                return 2.0/1.0;
            }else{
                double a = getMolecule(num);
                double b = getMolecule(num-1);
                return sum(num-1)+ a/b;
            }
        }
    
        /**
         * 按照规律获取分子
         * @param num
         * @return
         */
        public static double getMolecule(int num){
            if(num == 1){
                return 2.0;
            }else if(num == 2){
                return 3.0;
            }else{
                return getMolecule(num-1) + getMolecule(num-2);
            }
        }
    }

    运行结果:

    参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001

    This moment will nap, you will have a dream; But this moment study,you will interpret a dream.
  • 相关阅读:
    redis缓存问题解决方案
    JVM 2-垃圾收集及内存分配策略
    JVM 1-内存管理
    mysql数据库基础
    事务学习
    使用redis分布式锁来解决集群项目的定时任务冲突问题
    Spring AOP学习
    Spring IOC
    java语言基础7--线程相关类
    多重背包的二进制优化——DP
  • 原文地址:https://www.cnblogs.com/jssj/p/11222351.html
Copyright © 2020-2023  润新知