《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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM