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

    【程序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

    This moment will nap, you will have a dream; But this moment study,you will interpret a dream.
  • 相关阅读:
    Django extra 和 annotate
    剑指offer——26反转链表
    剑指offer——25链表中环的入口节点
    剑指offer——24链表中倒数第k个结点
    剑指offer——23调整数组顺序使奇数位于偶数前面
    剑指offer——22表示数值的字符串
    剑指offer——21正则表达式匹配
    剑指offer——20删除链表中重复的结点
    剑指offer——19删除链表的节点
    剑指offer——18打印从1到最大的n位数
  • 原文地址:https://www.cnblogs.com/jssj/p/12001479.html
Copyright © 2011-2022 走看看