《Java練習題》Java習題集五


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

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

【程序41】
題目:求0,1,2,3,4,5,6,7所能組成的8位奇數個數。

/**
 * 【程序41】
 * 題目:求0,1,2,3,4,5,6,7所能組成的8位奇數個數。
 */
public class Subject41 {

    public static void main(String[] args) {
        int[] arr = new int[]{0,1,2,3,4,5,6,7};
        compose(arr);
    }

    /**
     * 獲取:0—7所能組成的奇數個數
     */
    private static void compose(int[] arr) {
        /**奇數特點,該數不能被2整數。故各位數是1,3,5,7,9**/
        int oddCount = 0;
        for (int i = 0; i < arr.length; i++) {
            if(!isParity(arr[i])){
                oddCount++;
            }
        }
        /***************各位已經確定,剩下的數可以組成整數的個數*******************/
        int num = factorial(arr.length-1);
        /****************輸出結果*********************/
        System.out.println("以下數字:");
        printArray(arr);
        System.out.println("可產生的奇數個數:"+oddCount*num);

    }

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

    /**
     * 計算num的階乘!
     * @param num
     * @return
     */
    public static int factorial(int num){
        if(num == 1){
            return 1;
        }else{
            return num*factorial(num-1);
        }
    }

    /**
     * 打印數組
     * @param arr
     */
    private static void printArray(int[] arr) {
        for (int i = 0; i < arr.length ; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}

運行結果:

【程序42】
題目:輸入一個偶數,判斷該偶數等於哪兩個素數之和。

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

/**
 * 【程序42】
 * 題目:輸入一個偶數,判斷該偶數等於哪兩個素數之和。
 */
public class Subject42 {
    public static void main(String[] args) {
        System.out.println("請輸入大於等於2的偶數:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        getTwoPrimeNum(num);
    }

    /**
     * 獲取兩個素數
     * @param num
     */
    private static void getTwoPrimeNum(int num) {
        List<Integer> primeNumberList = getPrimeNumber(2,num);
        for (int i = 0; i < primeNumberList.size(); i++) {
            for (int j = i; j < primeNumberList.size(); j++) {
                if(num == primeNumberList.get(i) + primeNumberList.get(j)){
                    System.out.println("該偶數為素數("+primeNumberList.get(i)+")和素數("+primeNumberList.get(j)+")的和");
                }
            }
        }
    }

    /**
     * 判斷a和b之間有多少個素數
     * @param a
     * @param b
     */
    public static List<Integer> getPrimeNumber(int a, int b){
        List<Integer> primeNumberList = new ArrayList<>();
        if(a >= b){
            System.out.println("a不能大於等於b!");
        }
        for(int i=a;i<=b;i++){
            if(isPrimeNumber(i)){
                primeNumberList.add(i);
            }
        }
        return primeNumberList;
    }

    /**
     * 判斷num是否是一個素數
     * @param i
     * @return
     */
    private static boolean isPrimeNumber(int i) {
        boolean flag = true;
        for(int j=2;j <= i/2;j++){
            if(i%j == 0){
                flag = false;
                break;
            }
        }
        return flag;
    }
}

運行結果:

【程序43】
題目:判斷一個素數能被幾個9整除

import java.util.Scanner;

/**
 * 【程序43】
 * 題目:判斷一個素數能被幾個9整除 (例如3能被9整除, 9除以3,等於3.) ,備注 :數學除是后面的數除以前面的數
 * 盡管如此,該題還是感覺沒有意義。
 */
public class Subject43 {
    public static void main(String[] args) {
        System.out.println("請輸入一個素數");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        dealNum(num);
    }

    private static void dealNum(int num) {
        if(!isPrimeNumber(num)){
            System.out.println("您輸入的數字不能素數!");
            return ;
        }

        int divisorNum = 9;
        while(true){
            if(divisorNum%num == 0 ){
                System.out.println("您輸入的素數能被"+divisorNum/9+"個9整除!");
                break;
            }
            divisorNum = divisorNum + 9;
        }
    }

    /**
     * 判斷num是否是一個素數
     * @param i
     * @return
     */
    private static boolean isPrimeNumber(int i) {
        boolean flag = true;
        for(int j=2;j <= i/2;j++){
            if(i%j == 0){
                flag = false;
                break;
            }
        }
        return flag;
    }
}

運行結果:

【程序44】
題目:兩個字符串連接程序

/**
 * 【程序44】
 * 題目:兩個字符串連接程序(該題為C代碼題目。)使用C方式實現該程序
 */
public class Subject44 {
    public static void main(String[] args) {
        String str1 = "張三";
        String str2 = "李曉明";
        splicingStr(str1,str2);
    }

    private static void splicingStr(String str1, String str2) {
        /*****java實現***************/
        System.out.println("java實現:"+str1 + str2);
        /*****C實現,C言語字符串本身就是需要使用char[] 數組保存的,這里就不再從新寫了***************/
        char[] arrStr1 = str1.toCharArray();
        char[] arrStr2 = str2.toCharArray();
        char[] arrStrSum = new char[arrStr1.length + arrStr2.length];
        for (int i = 0; i < arrStrSum.length; i++) {
            if(i < str1.length()){
                arrStrSum[i] = arrStr1[i];
            }else{
                arrStrSum[i] = arrStr2[i-str1.length()];
            }
        }
        System.out.print("C語言方式實現:");
        printArray(arrStrSum);
    }
    /**
     * 打印數組
     * @param arr
     */
    private static void printArray(char[] arr) {
        for (int i = 0; i < arr.length ; i++) {
            System.out.print(arr[i]);
        }
        System.out.println();
    }
}

運行結果:

【程序45】
題目:讀取7個數(1—50)的整數值,每讀取一個值,程序打印出該值個數的*。

import java.util.Scanner;

/**
 * 【程序45】
 * 題目:讀取7個數(1—50)的整數值,每讀取一個值,程序打印出該值個數的*。
 */
public class Subject45 {
    public static void main(String[] args) {
        System.out.println("請輸入一個(1—50)正整數:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        printSymbol(num);
    }

    /**
     * 打印符號“*”
     * @param num
     */
    private static void printSymbol(int num) {
        for (int i = 0; i < num ; i++) {
            System.out.print("*");
        }
    }
}

運行結果:

【程序46】
題目:某個公司采用公用電話傳遞數據,數據是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然后用和除以10的余數代替該數字,再將第一位和第四位交換,第二位和第三位交換。

import java.util.Scanner;

/**
 * 【程序46】
 * 題目:某個公司采用公用電話傳遞數據,數據是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然后用和除以10的余數代替該數字,再將第一位和第四位交換,第二位和第三位交換。
 */
public class Subject46 {
    public static void main(String[] args) {
        System.out.println("請輸入一個4位整數:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        encryption(num);
    }

    /**
     * 數字加密
     * @param num
     */
    private static void encryption(int num) {
        char[] arr= (num+"").toCharArray();
        for (int i = 0; i < arr.length/2; i++) {
            char tmp = arr[i];
            arr[i] = arr[arr.length-i-1];
            arr[arr.length-i-1] = tmp;
        }
        String cipherText = "";
        for (int i = 0; i < arr.length; i++) {
            int tmp = (arr[i]-'0'+5)%10;
            cipherText = cipherText+tmp;
        }
        System.out.println("密文:"+cipherText);
    }
}

運行結果:

【程序47】
題目:計算字符串中子串出現的次數

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 【程序47】
 * 題目:計算字符串中子串出現的次數
 */
public class Subject47 {
    public static void main(String[] args) {
        String str1 = "adsdfgfddghrcadncmbvxcxadakssadkfowp";
        String str2 = "ad";
        strLookCount(str1,str2);
    }

    /**
     * 子串出現次數
     * @param str1
     * @param str2
     */
    private static void strLookCount(String str1, String str2) {
        Pattern pattern = Pattern.compile(str2);
        Matcher m = pattern.matcher(str1);
        int count=0;
        while(m.find()){
            count++;
        }
        System.out.println("子串出現次數: "+count);
    }
}

運行結果:

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


免責聲明!

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



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