本文已同步至:村雨遥

实例 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 是水仙花数。

剖析

因为水仙花数是一个三位数,所以它的范畴是 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,接着按如下步骤进行:

  1. 若该质数敲好为 num,则阐明合成质因数实现,打印即可;
  2. 若 prime != num,但 num 能被 prime 整除,则打印 prime,而后用 num 除以 prime 的商作为新的正整数 prime,反复第一步;
  3. 若 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);    }}

后果