一
题目:给一个不多于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(); } } }
四
需求:我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。请用所学知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现。