zoukankan      html  css  js  c++  java
  • 《Java练习题》Java习题集三

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

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

    【程序21】
    题目:求1+2!+3!+…+20!的和

    【程序22】
    题目:利用递归方法求5!。

    /**
     * 【程序21】
     * 题目:求1+2!+3!+…+20!的和
     * 【程序22】
     * 题目:利用递归方法求5!。
     */
    public class Subject21And22 {
    
        public static void main(String[] args) {
            long sum = factorialSum(20);
            System.out.println("1+2!+3!+…+20!之和:"+sum);
        }
    
        /**
         * 阶乘求和
         * @param num
         * @return
         */
        private static long factorialSum(int num) {
            long sum = 0;
            for (int j = 1; j <= num; j++) {
                sum = sum+factorial(j);
            }
            return sum;
        }
    
        /**
         * 计算num的阶乘!
         * @param num
         * @return
         */
        public static long factorial(int num){
            if(num == 1){
                return 1;
            }else{
               return num*factorial(num-1);
            }
        }
    }

    运行结果:

    【程序23】
    题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

    /**
     * 【程序23】
     * 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
     */
    public class Subject23 {
        public static void main(String[] args) {
            int ageNum = getAge(5);
            System.out.println("第五个人的年龄:"+ageNum);
        }
    
        /**
         * 获取年龄
         * @param p0
         * @return
         */
        private static int getAge(int p0) {
            if(p0 == 1){
                return 10;
            }else{
                return getAge(p0-1)+2;
            }
        }
    }

    运行结果:

    【程序24】
    题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

    /**
     * 【程序24】
     * 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
     */
    public class Subject24 {
    
        public static void main(String[] args) {
            System.out.println("请输入需要分析的正整数:");
            Scanner scanner = new Scanner(System.in);
            int num = scanner.nextInt();
            analysisInt(num);
        }
    
        /**
         * 分析正整数
         * @param num
         */
        private static void analysisInt(int num) {
            String tmpStr = String.valueOf(num);
            char[] arrStr =tmpStr.toCharArray();
            System.out.println("该正整数是"+arrStr.length+"位数。");
            System.out.println("倒序打印为:");
            for (int i = arrStr.length-1; i >= 0; i--) {
                System.out.print(arrStr[i]+" ");
            }
        }
    }

    运行结果:

    【程序25】
    题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 【程序25】
     * 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
     */
    public class Subject25 {
    
        private static List<Integer> list = new ArrayList<>();
    
        public static void main(String[] args) {
            int num = 12321;
            palindromeNumber(num);
            if(list.get(0) == list.get(4) && list.get(1) == list.get(3)){
                System.out.println("数字("+num+")是回文数");
            }else{
                System.out.println("数字("+num+")不是回文数");
            }
    
            /***第二种方式**/
            char[] arr = (num+"").toCharArray();
            if(arr[0]==arr[4] && arr[1]==arr[3]){
                System.out.println("数字("+num+")是回文数");
            }else{
                System.out.println("数字("+num+")不是回文数");
            }
        }
    
        /**
         * 判断num是否是回文数
         * @param num
         */
        private static void palindromeNumber(int num) {
            int lenght =  (num+"").length()-1;
            int numTmp = 0;
            if(num < 10){
                numTmp =num;
            }else{
                numTmp = num/(int)Math.pow(10,lenght);
                int tmp =num - numTmp*(int)Math.pow(10,lenght);
                palindromeNumber(tmp);
            }
            list.add(numTmp);
        }
    }

    运行结果:

    【程序26】
    题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

    import java.util.Scanner;
    
    /**
     * 【程序26】
     * 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
     */
    public class Subject26 {
        public static void main(String[] args) {
            System.out.println("请输入你现在心里想的哪个星期几(只需要前两个字母即可):");
            Scanner scanner = new Scanner(System.in);
            String  scannerStr= scanner.next();
            //判断输入的星期几
            weekDay(scannerStr);
        }
    
        /**
         * 判断输入的星期的星期几
         * @param scannerStr
         */
        private static void weekDay(String scannerStr) {
            char[] scannerArr = scannerStr.toCharArray();
            switch (scannerArr[0]){
                case 'M': System.out.println("您输入的星期一"); break;
                case 'T':
                    switch (scannerArr[1]){
                        case 'U': System.out.println("您输入的星期二"); break;
                        case 'H': System.out.println("您输入的星期四"); break;
                        default:
                            System.out.println("您输入的不是星期,请重新输入:");
                            Scanner scanner = new Scanner(System.in);
                            scannerStr= scanner.next();
                            //判断输入的星期几
                            weekDay(scannerStr);
                    } break;
    
                case 'W': System.out.println("您输入的星期三"); break;
                case 'F': System.out.println("您输入的星期五"); break;
                case 'S':
                    switch (scannerArr[1]){
                        case 'A': System.out.println("您输入的星期六"); break;
                        case 'U': System.out.println("您输入的星期天"); break;
                        default:
                            System.out.println("您输入的不是星期,请重新输入:");
                            Scanner scanner = new Scanner(System.in);
                            scannerStr= scanner.next();
                            //判断输入的星期几
                            weekDay(scannerStr);
                    }break;
                default:
                    System.out.println("您输入的不是星期,请重新输入:");
                    Scanner scanner = new Scanner(System.in);
                    scannerStr= scanner.next();
                    //判断输入的星期几
                    weekDay(scannerStr);
            }
        }
    }

    运行结果:

    【程序27】
    题目:对10个数进行排序

    import java.util.Scanner;
    
    /**
     * 【程序27】
     * 题目:对10个数进行排序
     */
    public class Subject27 {
    
        public static void main(String[] args) {
            System.out.println("请输入10个整数:");
            Scanner scanner = new Scanner(System.in);
    
            int[] arr = new int[10];
            for (int i = 0; i <10 ; i++) {
                System.out.println("请输入第"+(i+1)+"个数:");
                int num = scanner.nextInt();
                arr[i] = num;
            }
    
            sortInt(arr);
        }
    
        /**
         * 对数组arr进行排序
         * @param arr
         */
        private static void sortInt(int[] arr) {
            int tmp = 0;
            for(int i =0 ;i<arr.length;i++){
                for (int j = i+1; j <arr.length ; j++) {
                    if(arr[i] > arr[j]){
                        tmp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = tmp;
                    }
                }
            }
    
            System.out.println("从小到大排序为:");
            for (int i = 0; i <arr.length ; i++) {
                System.out.print(arr[i]+" ");
            }
        }
    }

    运行结果:

    【程序28】
    题目:求一个3*3矩阵对角线元素之和

    import java.util.Random;
    
    /**
     * 【程序28】
     * 题目:求一个3*3矩阵对角线元素之和
     */
    public class Subject28 {
    
        public static void main(String[] args) {
            Random random = new Random();
            int[][] arr = new int[3][3];
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    arr[i][j] = random.nextInt(10);
                }
            }
    
            seekDiagonalSum(arr);
        }
    
        /**
         * 计算矩阵对角线之后
         * @param arr
         */
        private static void seekDiagonalSum(int[][] arr) {
            int slash = 0;
            int backSlash = 0;
    
            for (int i = 0; i < arr.length; i++) {
                slash = slash + arr[i][i];
            }
    
            System.out.println("随机生成的3*3的矩阵为:");
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[i].length ; j++) {
                    System.out.print(arr[i][j] + " ");
                    if(i+j == arr.length-1){
                        backSlash += arr[i][j];
                    }
                }
                System.out.println("");
            }
            System.out.println("正向对角线之和:"+slash);
            System.out.println("反向对角线之和:"+backSlash);
        }
    }

    运行结果:

    【程序29】
    题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    import java.util.Scanner;
    
    /**
     * 【程序29】
     * 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
     */
    public class Subject29 {
        public static void main(String[] args) {
            int[] arr = new int[]{1,2,3,4,5,6,7,8,0};
            System.out.println("请输入一个1到8之间的数:");
            Scanner scanner = new Scanner(System.in);
            int num = scanner.nextInt();
    
            for (int i = 0; i < arr.length-2 ; i++) {
                if(num >= arr[i] && num <= arr[i+1] ){
                    for (int j = arr.length-1; j > i+1 ; j--) {
                        arr[j] = arr[j-1];
                    }
                    arr[i+1] = num;
                    break;
                }
            }
            System.out.print("插入数字("+num+")之后的数组为:");
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i]+" ");
            }
        }
    }

    运行结果:

    【程序30】
    题目:将一个数组逆序输出。

    /**
     * 【程序30】题目:将一个数组逆序输出。
     */
    public class Subject30 {
        public static void main(String[] args) {
            int[] arr = new int[]{1,2,3,4,5,6,7,8,9};
            System.out.println("顺序打印:");
            printArray(arr);
            reverseOrder(arr);
        }
    
        /**
         * 将arr数组逆序处理
         * @param arr
         */
        private static void reverseOrder(int[] arr) {
            int tmp = 0;
            for (int i = 0; i < arr.length/2 ; i++) {
                tmp = arr[i];
                arr[i] = arr[arr.length-1-i];
                arr[arr.length-1-i] = tmp;
            }
    
            System.out.println("逆序打印:");
            printArray(arr);
        }
    
        /**
         * 打印数组
         * @param arr
         */
        private static void printArray(int[] arr) {
            for (int i = 0; i < arr.length ; i++) {
                System.out.print(arr[i]+" ");
            }
            System.out.println();
        }
    }

    运行结果:

    参考: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.
  • 相关阅读:
    [LeetCode] Power of Three 判断3的次方数
    [LeetCode] 322. Coin Change 硬币找零
    [LeetCode] 321. Create Maximum Number 创建最大数
    ITK 3.20.1 VS2010 Configuration 配置
    VTK 5.10.1 VS2010 Configuration 配置
    FLTK 1.3.3 MinGW 4.9.1 Configuration 配置
    FLTK 1.1.10 VS2010 Configuration 配置
    Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别
    [LeetCode] Bulb Switcher 灯泡开关
    [LeetCode] Maximum Product of Word Lengths 单词长度的最大积
  • 原文地址:https://www.cnblogs.com/jssj/p/11260909.html
Copyright © 2011-2022 走看看