2022-10-4 Java作业

Posted on 2022-11-24 21:20  梦中千秋  阅读(42)  评论(0编辑  收藏  举报

文章目录

题目:给一个不多于5位的正整数。要求:一、逆序打印出各位数字。二、求它是几位数。

import java.util.Scanner;

/**
 * @Auther: admin
 * @Date: 2022/10/4 15:01
 * @Description: 题目:给一个不多于5位的正整数。要求:一、逆序打印出各位数字。二、求它是几位数。
 */

public class Practice01 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int number = scanner.nextInt();
        reversePrint(number);
        getDigits(number);
    }

    /**
     * 一、逆序打印出各位数字
     * 递归输出
     *
     * @param num
     */
    static void reversePrint(int num) {
        System.out.print(num % 10 + " ");
        if (num > 10) reversePrint(num / 10);
    }

    /**
     * 二、求它是几位数。
     * 利用log10函数 获取位数
     *
     * @param num
     */
    static void getDigits(int num) {
        System.out.println("你输入的是一个" + ((int) Math.log10(num) + 1) + "位数");
    }
}

题目:输出1000以内将一个正整数分解质因数。

/**
 * @Auther: admin
 * @Date: 2022/10/4 15:01
 * @Description: 题目:输出1000以内将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
 */

public class Practice02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个1000以内的正整数:");
        int number = scanner.nextInt();
        decPriFactor(number);
    }

    static void decPriFactor(int num) {
        System.out.print(num + "=");
        ArrayList<String> strings = new ArrayList<>();
        for (int i = 2; i <= num;) {
            // 如果 为素数 且 能被整除
            if (isPrime(i) && num % i == 0) {
                // 转为String类型 添加到链表中
                strings.add(String.valueOf(i));
                num /= i;
                // 重置为 2
                i = 2;
            }else{
                i++;
            }
        }
        // join: 以 * 间隔 合并数组中的字符串
        String res = String.join("*", strings);
        System.out.println(res);
    }

    /**
     * 判断num是否为素数
     * @param num
     * @return
     */
    static boolean isPrime(int num) {
        for (int i = 2; i < num / 2; i++)
            if (num % i == 0) return false;
        return true;
    }
}

题目:从键盘输入一个整数(1~20),则以该数字为矩阵的大小,把1,2,3.n*n的数字按照顺时针螺旋的形式填入其中。


/**
 * @Auther: admin
 * @Date: 2022/10/4 15:26
 * @Description: 从键盘输入一个整数(1~20),则以该数字为矩阵的大小,
 * 把1,2,3...n*n 的数字按照顺时针螺旋的形式填入其中
 */

public class Practice03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个1~20之间的数字:");
        int n = scanner.nextInt();
        clockwise(n);
        counterclockwise(n);
    }

    /**
     * 顺时针
     * @param n
     */
    static void clockwise(int n) {
        int[][] res = new int[n][n];
        int k = 1;
        for (int i = 0, j; i <= n / 2; i++) {
            // top
            for (j = i; j < n - i; j++) {
                res[i][j] = k++;
            }
            // right
            for (j = i + 1; j < n - i; j++) {
                res[j][n - i - 1] = k++;
            }
            // bottom
            for (j = n - i - 2; j >= i; j--) {
                res[n - i - 1][j] = k++;
            }
            // left
            for (j = n - i - 2; j > i; j--) {
                res[j][i] = k++;
            }
        }
        print(res);
    }

    /**
     * 逆时针
     * @param n
     */
    static void counterclockwise(int n) {
        int[][] res = new int[n][n];
        int k = 1;
        for (int i = 0, j; i <= n / 2; i++) {
            // left
            for (j = i; j < n - i; j++) {
                res[j][i] = k++;
            }
            // bottom
            for (j = i + 1; j < n - i; j++) {
                res[n - i - 1][j] = k++;
            }
            // right
            for (j = n - i - 2; j > i; j--) {
                res[j][n - i - 1] = k++;
            }
            // top
            for (j = n - i - 1; j > i; j--) {
                res[i][j] = k++;
            }
        }
        print(res);
    }

    /**
     * 按格式打印二维数组 m
     *
     * @param m
     */
    static void print(int m[][]) {
        for (int i = 0; i < m.length; i++) {
            for (int j = 0; j < m[i].length; j++)
                System.out.printf("%4d", m[i][j]);
            System.out.println();
        }
    }
}

需求:我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。请用所学知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现。
链接
在这里插入图片描述