Java编程练习:面试题与技巧解析

需积分: 7 0 下载量 3 浏览量 更新于2024-09-09 收藏 35KB TXT 举报
"Java常见面试题" 在Java编程面试中,常常会遇到各种类型的题目,这些题目旨在测试面试者的基础知识、逻辑思维以及问题解决能力。以下是对给定文件中四道典型Java编程题目的详细解析: 1. 斐波那契数列 此题涉及递归与循环的概念。斐波那契数列是每个数字是前两个数字的和,通常以0和1开始。题目中给出的代码使用循环实现了斐波那契数列的前24项。`f1` 和 `f2` 分别存储当前数列的前两个数,通过循环计算出下一项并输出。 ```java int f1 = 1, f2 = 1, f; // 初始化斐波那契数列的前两个数 for (int i = 3; i <= M; i++) { // 从第三项开始计算 f = f2; // 将f2的值赋给f f2 = f1 + f2; // 计算新的f2(f1和f2的和) f1 = f; // 更新f1为旧的f2 System.out.println(i + "µӶ:" + f2); // 输出当前项 } ``` 2. 打印素数 这道题是检查101到200之间的所有素数。素数是大于1且只有1和自身两个正因数的自然数。代码通过两层循环实现:外层循环遍历101到200,内层循环用于判断是否为素数。如果一个数能被它小于等于其平方根的任何数整除,则该数不是素数。 ```java int count = 0; // 计数器,记录素数个数 for (int i = 101; i < 200; i += 2) { // 只检查奇数 boolean b = false; // 假设当前数不是素数 for (int j = 2; j <= Math.sqrt(i); j++) { // 检查到平方根 if (i % j == 0) { // 如果能被整除,不是素数 b = false; break; } else { b = true; } } if (b == true) { // 如果是素数,打印并计数 count++; System.out.println(i); } } System.out.println(": " + count); // 输出素数总数 ``` 3. “水仙花数” 水仙花数是指一个三位数,其各位数字立方和等于该数本身。题目要求找出101到999之间的所有水仙花数。 ```java int b1, b2, b3; // 分别存储百位、十位和个位数字 for (int m = 101; m < 1000; m++) { b3 = m / 100; // 获取百位 b2 = m % 100 / 10; // 获取十位 b1 = m % 10; // 获取个位 if ((b3 * b3 * b3 + b2 * b2 * b2 + b1 * b1 * b1) == m) { System.out.println(m + " ѫ"); } } ``` 4. 因数分解 这道题要求输入一个正整数n,并将其所有因数打印出来。题目分为三个步骤:(1) 找到n的所有因数;(2) 如果n等于其因数k,只打印一次k;(3) 如果n不等于k,打印k和k+1。 ```java Scanner s = new Scanner(System.in); System.out.print("请输入一个正整数:"); int n = s.nextInt(); Set<Integer> factors = new HashSet<>(); // 存储因数,避免重复 for (int i = 1; i <= Math.sqrt(n); i++) { // 检查1到n的平方根 if (n % i == 0) { factors.add(i); // 添加因数 if (n / i != i) { // 如果n/i不是i,添加n/i作为另一个因数 factors.add(n / i); } } } System.out.println(n + " 的因数有:"); for (int factor : factors) { System.out.print(factor + " "); } ``` 以上四道题目覆盖了Java基础中的循环、条件判断、数学运算、数组操作、集合类以及算法应用等知识点,对于理解和提升Java编程能力非常有帮助。