实例 1

题目

古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?(输出第 10 个月的兔子对数)

分析

其实这就是个典型的斐波拉契数列问题:

第 1 个月:1 对兔子

第 2 个月:1 对兔子

第 3 个月:2 对兔子

第 4 个月:3 对兔子

……

即从第 3 个月开始,当前月的兔子对数是当前月前两个月的兔子对数之和。

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @公众号 : 村雨遥
  9. * @website : https://cunyu1943.github.io
  10. * @date : 2021/6/1 13:13
  11. * @project : Java 编程实例
  12. * @package : PACKAGE_NAME
  13. * @className : Example1
  14. * @description :
  15. */
  16. public class Example1 {
  17. public static void main(String[] args) {
  18. Scanner scanner = new Scanner(System.in);
  19. int month = 0;
  20. System.out.println("输入月份");
  21. month = scanner.nextInt();
  22. int former = 1;
  23. int latter = 1;
  24. for (int i = 1; i <= month; i++) {
  25. // 第 1、2 个月的情况
  26. if (i < 3) {
  27. latter = 1;
  28. } else {
  29. int tmp = latter;
  30. latter += former;
  31. former = tmp;
  32. }
  33. System.out.format("第 %d 个月的兔子对数:%d\n", i, latter);
  34. }
  35. }
  36. }

结果

那些年,我们一起做过的 Java 课后练习题(1 - 5) - 图1

实例 2

题目

判断 100 - 200 之间的素数的个数并输出。

分析

判断一个数是否为素数,只要用这个数分别取除 2 ~ sqrt(这个数),一旦被整除,则表明这个数不是素数,否则就是素数。

实现

  1. /**
  2. * Created with IntelliJ IDEA.
  3. *
  4. * @author : cunyu
  5. * @version : 1.0
  6. * @email : 747731461@qq.com
  7. * @公众号 : 村雨遥
  8. * @website : https://cunyu1943.github.io
  9. * @date : 2021/6/1 13:30
  10. * @project : Java 编程实例
  11. * @package : PACKAGE_NAME
  12. * @className : Example2
  13. * @description :
  14. */
  15. public class Example2 {
  16. public static void main(String[] args) {
  17. // 素数个数
  18. int count = 0;
  19. System.out.println("100 ~ 200 之间的素数:");
  20. for (int i = 100; i <= 200; i++) {
  21. // 默认非素数
  22. boolean isPrime = false;
  23. for (int j = 2; j <= (int) Math.sqrt(i); j++) {
  24. // 一旦能除尽,则说明不是素数,直接跳出循环
  25. if (i % j == 0) {
  26. isPrime = true;
  27. break;
  28. }
  29. }
  30. // 如果是素数,则素数个数 + 1,然后打印出该素数
  31. if (isPrime == false) {
  32. count++;
  33. System.out.print(i + "\t");
  34. // 每行打印 5 个素数,
  35. if (count % 5 == 0) {
  36. System.out.println();
  37. }
  38. }
  39. }
  40. System.out.println("\n素数总个数:" + count);
  41. }
  42. }

结果

那些年,我们一起做过的 Java 课后练习题(1 - 5) - 图2

实例 3

题目

打印出所有“水仙花数”,所谓水仙花数,是指有一个三位数,其各个数字的立方和等于其本身,例如:那些年,我们一起做过的 Java 课后练习题(1 - 5) - 图3,所以 153 是水仙花数。

分析

因为水仙花数是一个三位数,所以它的范围是 100 ~ 999,然后分别求出这个三位数的个位、十位、百位,最后判断他们各自立方的和是否等于该三位数即可。

实现

  1. /**
  2. * Created with IntelliJ IDEA.
  3. *
  4. * @author : cunyu
  5. * @version : 1.0
  6. * @email : 747731461@qq.com
  7. * @公众号 : 村雨遥
  8. * @website : https://cunyu1943.github.io
  9. * @date : 2021/6/1 13:53
  10. * @project : Java 编程实例
  11. * @package : PACKAGE_NAME
  12. * @className : Example3
  13. * @description :
  14. */
  15. public class Example3 {
  16. public static void main(String[] args) {
  17. System.out.println("水仙花数:");
  18. for (int i = 100; i < 1000; i++) {
  19. // 个位
  20. int one = i % 10;
  21. // 十位
  22. int ten = i % 100 / 10;
  23. // 百位
  24. int hundred = i / 100;
  25. // 计数
  26. int count = 0;
  27. if (one * one * one + ten * ten * ten + hundred * hundred * hundred == i) {
  28. count++;
  29. // 打印水仙花数,每 5 个换行输出
  30. System.out.print(i + "\t");
  31. if (count % 5 == 0) {
  32. System.out.println();
  33. }
  34. }
  35. }
  36. }
  37. }

结果

那些年,我们一起做过的 Java 课后练习题(1 - 5) - 图4

实例 4

题目

将一个正整数分解质因数,如输入 90,打印出:90 = 2 3 3* 5

分析

要对一个数 num 进行分解质因数,则应先找一个最小的质数 prime,接着按如下步骤进行:

  1. 若该质数敲好为 num,则说明分解质因数完成,打印即可;
  2. 若 prime != num,但 num 能被 prime 整除,则打印 prime,然后用 num 除以 prime 的商作为新的正整数 prime,重复第一步;
  3. 若 num 不能被 prime 整除,则用 prime + 1 代替 prime,重复执行第一步;

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @公众号 : 村雨遥
  9. * @website : https://cunyu1943.github.io
  10. * @date : 2021/6/1 14:12
  11. * @project : Java 编程实例
  12. * @package : PACKAGE_NAME
  13. * @className : Example4
  14. * @description :
  15. */
  16. public class Example4 {
  17. public static void main(String[] args) {
  18. Scanner scanner = new Scanner(System.in);
  19. System.out.println("输入一个数");
  20. int num = scanner.nextInt();
  21. System.out.print(num + " = ");
  22. // 最小的质因数
  23. int prime = 2;
  24. while (prime <= num) {
  25. // num == prime,直接打印
  26. if (num == prime) {
  27. System.out.println(num);
  28. break;
  29. // 能除尽时
  30. } else if (num % prime == 0) {
  31. System.out.print(prime + " * ");
  32. num = num / prime;
  33. } else {
  34. // 除不尽时
  35. prime = prime + 1;
  36. }
  37. }
  38. }
  39. }

结果

那些年,我们一起做过的 Java 课后练习题(1 - 5) - 图5

实例 5

题目

利用条件运算符的嵌套来完成:学习成绩 >= 90 分的同学用 A 表示,60 - 89 分之间的用 B 表示,60 分以下的用 C 表示;

分析

直接用三元计算符即可;

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @公众号 : 村雨遥
  9. * @website : https://cunyu1943.github.io
  10. * @date : 2021/6/1 22:10
  11. * @project : Java 编程实例
  12. * @package : PACKAGE_NAME
  13. * @className : Example5
  14. * @description :
  15. */
  16. public class Example5 {
  17. public static void main(String[] args) {
  18. Scanner scanner = new Scanner(System.in);
  19. System.out.println("输入成绩");
  20. int score = scanner.nextInt();
  21. char grade;
  22. grade = score >= 90 ? 'A' : score >= 60 ? 'B' : 'C';
  23. System.out.println("等级为:" + grade);
  24. }
  25. }

结果

那些年,我们一起做过的 Java 课后练习题(1 - 5) - 图6