实例 1
题目
古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?(输出第 10 个月的兔子对数)
分析
其实这就是个典型的斐波拉契数列问题:
第 1 个月:1 对兔子
第 2 个月:1 对兔子
第 3 个月:2 对兔子
第 4 个月:3 对兔子
……
即从第 3 个月开始,当前月的兔子对数是当前月前两个月的兔子对数之和。
实现
import java.util.Scanner; /** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @公众号 : 村雨遥 * @website : https://cunyu1943.github.io * @date : 2021/6/1 13:13 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example1 * @description : */ public class Example1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int month = 0; System.out.println("输入月份"); month = scanner.nextInt(); int former = 1; int latter = 1; for (int i = 1; i <= month; i++) { // 第 1、2 个月的情况 if (i < 3) { latter = 1; } else { int tmp = latter; latter += former; former = tmp; } System.out.format("第 %d 个月的兔子对数:%d\n", i, latter); } } }
实例 2
题目
判断 100 - 200 之间的素数的个数并输出。
分析
判断一个数是否为素数,只要用这个数分别取除 2 ~ sqrt(这个数)
,一旦被整除,则表明这个数不是素数,否则就是素数。
实现
/** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @公众号 : 村雨遥 * @website : https://cunyu1943.github.io * @date : 2021/6/1 13:30 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example2 * @description : */ public class Example2 { public static void main(String[] args) { // 素数个数 int count = 0; System.out.println("100 ~ 200 之间的素数:"); for (int i = 100; i <= 200; i++) { // 默认非素数 boolean isPrime = false; for (int j = 2; j <= (int) Math.sqrt(i); j++) { // 一旦能除尽,则说明不是素数,直接跳出循环 if (i % j == 0) { isPrime = true; break; } } // 如果是素数,则素数个数 + 1,然后打印出该素数 if (isPrime == false) { count++; System.out.print(i + "\t"); // 每行打印 5 个素数, if (count % 5 == 0) { System.out.println(); } } } System.out.println("\n素数总个数:" + count); } }
实例 3
题目
打印出所有“水仙花数”,所谓水仙花数,是指有一个三位数,其各个数字的立方和等于其本身,例如:153 = 1 ∗ 1 ∗ 1 + 5 ∗ 5 ∗ 5 + 3 ∗ 3 ∗ 3 153=1*1*1+5*5*5+3*3*3153=1∗1∗1+5∗5∗5+3∗3∗3,所以 153 是水仙花数。
分析
因为水仙花数是一个三位数,所以它的范围是 100 ~ 999,然后分别求出这个三位数的个位、十位、百位,最后判断他们各自立方的和是否等于该三位数即可。
实现
/** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @公众号 : 村雨遥 * @website : https://cunyu1943.github.io * @date : 2021/6/1 13:53 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example3 * @description : */ public class Example3 { public static void main(String[] args) { System.out.println("水仙花数:"); for (int i = 100; i < 1000; i++) { // 个位 int one = i % 10; // 十位 int ten = i % 100 / 10; // 百位 int hundred = i / 100; // 计数 int count = 0; if (one * one * one + ten * ten * ten + hundred * hundred * hundred == i) { count++; // 打印水仙花数,每 5 个换行输出 System.out.print(i + "\t"); if (count % 5 == 0) { System.out.println(); } } } } }
实例 4
题目
将一个正整数分解质因数,如输入 90,打印出:90 = 2 * 3 * 3* 5
分析
要对一个数 num 进行分解质因数,则应先找一个最小的质数 prime,接着按如下步骤进行:
若该质数敲好为 num,则说明分解质因数完成,打印即可;
若 prime != num,但 num 能被 prime 整除,则打印 prime,然后用 num 除以 prime 的商作为新的正整数 prime,重复第一步;
若 num 不能被 prime 整除,则用 prime + 1 代替 prime,重复执行第一步;
实现
import java.util.Scanner; /** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @公众号 : 村雨遥 * @website : https://cunyu1943.github.io * @date : 2021/6/1 14:12 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example4 * @description : */ public class Example4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("输入一个数"); int num = scanner.nextInt(); System.out.print(num + " = "); // 最小的质因数 int prime = 2; while (prime <= num) { // num == prime,直接打印 if (num == prime) { System.out.println(num); break; // 能除尽时 } else if (num % prime == 0) { System.out.print(prime + " * "); num = num / prime; } else { // 除不尽时 prime = prime + 1; } } } }
实例 5
题目
利用条件运算符的嵌套来完成:学习成绩 >= 90 分的同学用 A 表示,60 - 89 分之间的用 B 表示,60 分以下的用 C 表示;
分析
直接用三元计算符即可;
实现
import java.util.Scanner; /** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @公众号 : 村雨遥 * @website : https://cunyu1943.github.io * @date : 2021/6/1 22:10 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example5 * @description : */ public class Example5 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("输入成绩"); int score = scanner.nextInt(); char grade; grade = score >= 90 ? 'A' : score >= 60 ? 'B' : 'C'; System.out.println("等级为:" + grade); } }