《Java練習題》Java習題集四


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

Java總結:https://www.cnblogs.com/jssj/p/11146205.html

【程序31】
題目:取一個整數a從右端開始的4~7位。

import java.util.Scanner;

/**
 * 【程序31】
 * 題目:取一個整數a從右端開始的4~7位。
 */
public class Subject31 {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        System.out.println("請輸入一個操作8位的整數");
        String num = scanner.next();
        intercept(num);
    }

    /**
     * 截取num
     * @param num
     */
    private static void intercept(String num) {
        char[] arr = num.toCharArray();
        int j=0;
        System.out.print("截取結果為:");
        for(int i = arr.length-1 ; i >= 0;i--){
            j++;
            if(j >= 4 && j<=7){
                System.out.print(arr[i]+" ");
            }
        }
    }
}

運行結果:

 

【程序32】
題目:打印出楊輝三角形(要求打印出10行如下圖) ,完美楊輝三角。

import java.util.ArrayList;
import java.util.List;

/**
 * 【程序32】
 * 題目:打印出楊輝三角形(要求打印出10行如下圖)
 */
public class Subject32 {

    private static int num_1 = 10;
    private static List<int[]> list = new ArrayList<>();

    public static void main(String[] args) {
        System.out.println("楊輝三角形打印如下:");
        yangHuiTriangle(num_1);
        int maxLength = (list.get(list.size()-1)[num_1/2]+"").length();
        boolean flag = isParity(maxLength);
        for (int i = 0 ; i < list.size(); i++) {
            int[] arr = list.get(i);
            printSpace(arr,maxLength);
            for (int j = 0; j < arr.length; j++) {
                System.out.print(arr[j]);
                int tmp = (arr[j]+"").length();
                if(flag){
                    for (int k = 0; k < maxLength+2 - tmp; k++) {
                        System.out.print(" ");
                    }
                }else{
                    for (int k = 0; k < maxLength+1 - tmp; k++) {
                        System.out.print(" ");
                    }
                }

            }
            System.out.println();
        }
    }

    /**
     * 判斷maxLength是奇數還是偶數
     * @param maxLength
     * @return
     */
    private static boolean isParity(int maxLength) {
        if(maxLength%2 == 1){
            return false;
        }else {
            return true;
        }
    }

    /**
     * 獲取楊輝三角數據
     * @param num
     * @return
     */
    private static int[] yangHuiTriangle(int num) {
        if(num == 1){
            int[] arr = new int[]{1};
            list.add(arr);
            return arr;
        }else{
            int[] arrPro = yangHuiTriangle(num-1);
            int[] arrAft = new int[num];
            for (int i = 0; i < arrAft.length ; i++) {
                if(i == 0){
                    arrAft[i] = 0+arrPro[i];
                }else if( i== arrAft.length-1){
                    arrAft[i] = arrPro[i-1]+0;
                }else{
                    arrAft[i] = arrPro[i-1] + arrPro[i];
                }
            }
            list.add(arrAft);
            return arrAft;
        }
    }

    /**
     * 空格打印
     * @param arr
     */
    private static void printSpace(int[] arr,int maxLength) {
        for (int i = 0; i < num_1 - arr.length ; i++) {
            double loopNum = Math.ceil((maxLength+1)/2.0);
            for (int j = 0; j < loopNum; j++) {
                System.out.print(" ");
            }
        }
    }
}

運行結果:

【程序33】
題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。

/**
 * 【程序33】
 * 題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。
 */
public class Subject33 {

    public static void main(String[] args) {
        int[] arr = new int[]{44,56,89,32,11,78,55,82,02,68,44,27};
        printArray(arr);
        deal(arr);
    }

    private static void deal(int[] arr) {
        int maxNum = arr[0];    //最大數
        int minNum = arr[0];    //最小數
        int maxPosition = 0;    //最大數在數組的位置。
        int minPosition = 0;    //最小數在數組的位置。
        for (int i = 1; i <  arr.length; i++) {
            if(arr[i] > maxNum){
                maxNum = arr[i];
                maxPosition = i;
            }
            if(arr[i] < minNum){
                minNum = arr[i];
                minPosition = i;
            }
        }

        /*********重組數組(最大的與第一個元素交換,最小的與最后一個元素)************/
        int tmp = 0;
        tmp = arr[0];
        arr[0] = arr[maxPosition];
        arr[maxPosition] = tmp;

        tmp = arr[arr.length-1];
        arr[arr.length-1] = arr[minPosition];
        arr[minPosition] = tmp;

        /*********打印數組***********/
        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();
    }
}

運行結果:

【程序34】
題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數

/**
 * 【程序34】
 * 題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數
 */
public class Subject34 {

    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
        /**********************打印數組*************************/
        printArray(arr);
        int m = 6;   //偏移量
        deviation(arr,m);
    }

    /**
     * 數組arr偏移m后的結果
     * @param arr
     * @param m
     */
    private static void deviation(int[] arr,int m) {
        int[] newArr = new int[m];
        int count = m-1;
        /*******************將最后m為數保存到新數組中********************/
        for (int i = arr.length-1; i >= arr.length-m ; i--) {
            newArr[count--] = arr[i];
        }

        /********************將數組中的數據往后移動m位***************************/
        for (int i =  arr.length-1; i >= m; i--) {
            arr[i] = arr[i-m];
        }

        /**********************數組前面的數據補充完整*************************/
        for (int i = 0; i < newArr.length; i++) {
            arr[i] = newArr[i];
        }

        /**********************打印數組*************************/
        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();
    }
}

運行結果:

【程序35】
題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 【程序35】
 * 題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位
 */
public class Subject35 {
    public static void main(String[] args) {
        System.out.println("請輸入人數:");
        Scanner scanner = new Scanner(System.in);
        int n= scanner.nextInt();
        numberGame(n);
    }

    /**
     * 數字游戲
     * @param n
     */
    private static void numberGame(int n) {
        List<Integer> list = new ArrayList<>();
        /****************給50個人編號******************/
        for (int i = 1; i <= n; i++) {
            list.add(i);
        }
        endGameByNum(list,1);
    }

    /**
     * 獲取最后留下的人
     * @param list
     * @param ident
     */
    private static void endGameByNum(List<Integer> list,int ident) {
        List<Integer> listTmp = new ArrayList<>();

        if(list.size() >=  3 ) {
            for (int i = 0; i < list.size(); i++) {
                if ((i+ident)%3 != 0) {
                    listTmp.add(list.get(i));
                }
            }
            endGameByNum(listTmp,list.size()%3+1);
        }else{
            for (int i = 0; i < list.size(); i++) {
                System.out.println("最后留下的人為"+list.get(i)+"號選手!");
            }
        }
    }
}

運行結果:

 

【程序36】
題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,並輸出其長度。

import java.util.Scanner;

/**
 * 【程序36】
 * 題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,並輸出其長度。
 */
public class Subject36 {

    public static void main(String[] args) {
        System.out.println("請輸入一個字符串:");
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        stringLength(str);
    }

    /**
     * 輸出字符串長度
     * @param str
     */
    private static void stringLength(String str) {
        char[] arr = str.toCharArray();
        System.out.println("字符串長度:"+ arr.length);
    }
}

 

運行結果:

 

 

【程序37】
題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+…+1/n,當輸入n為奇數時,調用函數1/1+1/3+…+1/n

import java.util.Scanner;

/**
 * 【程序37】
 * 題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+…+1/n,當輸入n為奇數時,調用函數1/1+1/3+…+1/n
 */
public class Subject37 {

    private static double sum = 0;    //求和

    private static String str = "";   //拼接字符串

    public static void main(String[] args) {
        System.out.println("請輸入一個正整數:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        specialDeal(num);
        System.out.print(str.substring(0,str.length()-2)+"的和為:");
        System.out.println(sum);
    }

    /**
     * 輸入n為偶數時,調用函數求1/2+1/4+…+1/n,當輸入n為奇數時,調用函數1/1+1/3+…+1/n
     * @param num
     */
    private static void specialDeal(int num) {
        sum = sum+ 1.0/num;
        if(num > 2){
            specialDeal(num-2);
        }
        str = str+"1/"+num+" + ";
    }
}

運行結果:

【程序38】
題目:字符串排序。

/**
 * 【程序38】
 * 題目:字符串排序。
 */
public class Subject38 {
    public static void main(String[] args) {
        String[] arrStr = new String[]{"asd","bbb","dddd","add","eddd","ccdd","caaa","adds","cvf","dass"};
        System.out.print("初始數組:");
        printStrinArray(arrStr);
        stringOrder(arrStr);
    }

    /**
     * 字符串數組排序
     * @param arrStr
     */
    private static void stringOrder(String[] arrStr) {
        for (int i = 0; i <arrStr.length ; i++) {
            for (int j = i+1; j < arrStr.length; j++) {
                String tmp = "";
                if(arrStr[i].compareTo(arrStr[j]) > 0){
                    tmp = arrStr[i];
                    arrStr[i] =  arrStr[j];
                    arrStr[j] = tmp;
                }
            }
        }
        System.out.print("排序后數組:");
        printStrinArray(arrStr);
    }

    /**
     * 字符串數組打印
     * @param arrStr
     */
    private static void printStrinArray(String[] arrStr) {
        for (int i = 0; i < arrStr.length; i++) {
            System.out.print(arrStr[i]+" ");
        }
        System.out.println();
    }
}

運行結果:

【程序39】
題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?

/**
 * 【程序39】
 * 題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。
* 第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,
* 問海灘上原來最少有多少個桃子?
*/ public class Subject39 { private static int count = 0; //分桃次數 private static int tmp = 0; //桃子數量 public static void main(String[] args) { averagePeachTot(); } /** * 循環獲取桃子總數 */ private static void averagePeachTot() { int frequency = 4; while(true){ if(count == 6){ System.out.println(tmp); break; } count =0; averagePeach(frequency); frequency+=4; } } /** * 平分桃子 */ private static void averagePeach(int num) { count++; if(num%4 == 0 && count<=5){ tmp = num + 1 + num/4; averagePeach( tmp); } } }

運行結果:

【程序40】
題目:809*??=800*??+9*??+1
其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。求??代表的兩位數,及809*??后的結果

/**
 * 【程序40】
 * 題目:809*??=800*??+9*??+1    改成 809*??=800*??+9*??
 * 其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。求??代表的兩位數,及809*??后的結果, 題目錯誤
 */
public class Subject40 {
    public static void main(String[] args) {
        mathematicsFormula();
    }

    /**
     * 數學公式
     */
    private static void mathematicsFormula() {
        boolean flag = false;
        for (int i = 10; i < 100 ; i++) {
            if( 8*i < 100 && 9*i >100 && 809*i == 800*i+9*i){
                flag = true;
                System.out.println("??=" + i);
                System.out.println("809*?? = " + 809*i);
            }
        }
        if(!flag){
            System.out.println("為找到合適的數");
        }
    }
}

運行結果:

 

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


免責聲明!

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



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