《Java练习题》习题集五

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

原文地址:https://www.cnblogs.com/jssj/p/12001479.html

时间: 2024-10-19 00:46:16

《Java练习题》习题集五的相关文章

java入门第五步之数据库项目实战【转】

在真正进入代码编写前些进行一些工具的准备: 1.保证有一个可用的数据库,这里我用sql server 2000为例,2.拥有一个ide,如ecelise或myeclipse等,这里我使用的是myeclipse 8.5 3.数据库连接的架包: 这里数据库的安装就不说了,如果你安装的sql server 2000的话,你在使用jdbc进行连接时还需要打上sp3补丁: 一切准备就绪后我们就开始进入正题了: 1.首先我们在file--->New---->Web Project(也可以再Package

Java设计模式(五)外观模式 桥梁模式

(九)外观模式 外观模式为子系统提供一个接口,便于使用.解决了类与类之间关系的,外观模式将类之间的关系放在一个 Facade 类中,降低了类类之间的耦合度,该模式不涉及接口. class CPU { public void startup(){ System.out.println("cpu start"); } public void shutdown(){ System.out.println("cpu stop"); } } class Memory { pu

Java中的五种单例模式实现方法

[代码] Java中的五种单例模式实现方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package s

跟老杨学java系列(五) JDK的安装与配置

跟老杨学java系列(五) JDK的安装与配置 提示:本节内容对于java入门是非常关键的,对于刚接触java的同学一定要认真学习,欢迎大家留言探讨技术问题.其他问题概不回复. (书接上回)上节课程我们简单介绍了java项目的开发过程及常用的开发工具,这节课我们详细讲解一下JDK的安装与配置.根据上一节的学习,我们知道编写完java代码后,需要先对java代码进行编译,然后再执行.而java程序的编译与执行都是通过JDK来完成的.所以做java开发,首先我们需要学会安装和配置JDK.下面我们就来

Java 多线程(五) 多线程的同步

Java 多线程(五) 多线程的同步 为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源.必须对这种潜在资源冲突进行预防. 解决方法:在线程使用一个资源时为其加锁即可. 访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁. 程序实例 用一个取钱的程序例子,来说明为什么需要引入同步. 在使用同步机制前,整体程序如下: public class FetchMoneyTest { public static void main(Stri

201671010140. 2016-2017-2 《Java程序设计》java学习第五周

java学习第五周心得体会        本周,是Java学习第五周,随着时间推移,随着课本内容的推进,我们接触到的程序也开始变得越来越复杂,不再是二三章那些用来练手的小程序了,这一点,在我们的例题运行注解上就可以感受到,程序的长度,涉及到的知识越来越多.        本周学习主要关注超类与子类的关系--继承,继承是面向对象最显著的一个特性,从已有的类(超类)中派生出新的类(子类),新的类能继承已有类的数据属性和行为,并能扩展新的能力. Java继承是使用已存在的类的定义作为基础建立新类的技术

20140314 java练习题-打印各种图形

1.打印直角三角形 import java.util.Scanner; public class AgeDemo { public static void main(String[] args){ //打印一个倒立的直角三角形如下: //**** //*** //** //* Scanner sc = new Scanner(System.in); System.out.println("请输入边长:"); int a = sc.nextInt(); for(int j=a;j>

【Java心得总结五】Java容器上——容器初探

在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成员.集合具有:无序性.互异性.确定性. 而在我们计算机科学种集合的定义是:集合是一组可变数量的数据项(也可能是0个)的组合,这些数据项可能共享某些特征,需要以某种操作方式一起进行操作.一般来讲,这些数据项的类型是相同的,或基类相同(若使用的语言支持继承).列表(或数组)通常不被认为是集合,因为其大小

【Java心得总结五】Java容器中——Collection

在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器做一个着重的探索与总结. Collection:一个独立元素的序列,这些元素都服从一条或多条规则.(注:Collection其实就是将一组数据对象按照一维线性的方式组织起来)List必须按照插入的顺序保存元素,而set不能有重复元素.Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序

Java多线程(五)、多线程其他知识简要介绍(转)

Java多线程(五).多线程其他知识简要介绍 分类: javaSE综合知识点 2012-09-19 18:12 1413人阅读 评论(1) 收藏 举报 一.线程组 [java] view plaincopyprint? /** * A thread group represents a set of threads. In addition, a thread * group can also include other thread groups. The thread groups form