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.
  • 相关阅读:
    腾信短信接口实例
    ajax
    jquery
    生命鸡汤
    sql中事物
    ajax,一般处理程序,登陆
    CSS选择器大全
    【JavaScript】轮播图
    【DOM练习】淘宝购物车
    【DOM练习】百度历史搜索栏
  • 原文地址:https://www.cnblogs.com/jssj/p/11260909.html
Copyright © 2011-2022 走看看