Java学习9
·
学习计划(完整版・代码 + 讲解)
总目标:彻底吃透循环、嵌套循环、循环控制,为算法与业务逻辑打牢基础总时长:6.5 小时前置:Day1 + Day2 完全掌握
上午(2.5h)循环完整体系 + 强化训练
1. for 循环巩固与细节(0.5h)
三要素
- 初始值
- 条件判断
- 迭代(自增 / 自减)
死循环
java
运行
for(;;) {
// 无限循环
}
倒序循环
java
运行
for (int i = 10; i >= 1; i--) {
System.out.println(i);
}
练习 1:1~100 累加和
java
运行
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum); // 5050
练习 2:1~100 奇数和、偶数和
java
运行
int oddSum = 0;
int evenSum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 1) {
oddSum += i;
} else {
evenSum += i;
}
}
System.out.println("奇数和:" + oddSum);
System.out.println("偶数和:" + evenSum);
2. while 循环(0.5h)
格式:
java
运行
while(条件) {
循环体
}
特点:先判断,再执行,次数不确定时用。
示例:循环输入数字直到输入 0 停止(简化版)
java
运行
import java.util.Scanner;
public class TestWhile {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
System.out.println("输入数字,0退出:");
num = sc.nextInt();
while (num != 0) {
System.out.println("你输入了:" + num);
num = sc.nextInt();
}
System.out.println("程序结束");
}
}
3. do–while 循环(0.5h)
格式:
java
运行
do {
循环体
} while(条件);
特点:先执行一次,再判断 → 至少执行一次
while vs do–while(面试必问)
- while:可能一次都不执行
- do–while:至少执行一次
示例:
java
运行
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 5);
4. break 与 continue(核心难点 1h)
break
跳出整个循环,循环立刻结束。
java
运行
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
System.out.println(i); // 1 2 3 4
}
continue
跳过本次循环剩余语句,直接进入下一次。
java
运行
for (int i = 1; i <= 10; i++) {
if (i == 5) {
continue;
}
System.out.println(i); // 不输出 5
}
练习:跳过所有 3 的倍数
java
运行
for (int i = 1; i <= 20; i++) {
if (i % 3 == 0) {
continue;
}
System.out.print(i + " ");
}
带标签的 break/continue(了解)
用于多层循环中跳出指定循环,企业偶尔见。
下午(3h)嵌套循环 + 经典必写案例
1. 嵌套循环原理(0.5h)
口诀:外层走一次,内层走一圈
java
运行
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
System.out.printf("i=%d, j=%d%n", i, j);
}
}
2. 经典必写案例(2h)
(1)打印矩形
java
运行
// 3行5列矩形
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print("*");
}
System.out.println();
}
(2)打印直角三角形
java
运行
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
(3)99 乘法表(实习必考)
java
运行
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (i * j) + "\t");
}
System.out.println();
}
(4)百钱百鸡(经典算法)
公鸡 5 元,母鸡 3 元,小鸡 1 元 3 只,100 元买 100 只。
java
运行
for (int gong = 0; gong <= 20; gong++) {
for (int mu = 0; mu <= 33; mu++) {
int xiao = 100 - gong - mu;
if (xiao % 3 == 0 && 5 * gong + 3 * mu + xiao / 3 == 100) {
System.out.println("公鸡:" + gong + " 母鸡:" + mu + " 小鸡:" + xiao);
}
}
}
(5)判断质数
质数:只能被 1 和自身整除的大于 1 的整数。
java
运行
public static boolean isPrime(int num) {
if (num < 2) return false;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
调用:
java
运行
System.out.println(isPrime(17)); // true
3. 随机数 Random(0.5h)
java
运行
import java.util.Random;
Random r = new Random();
int num = r.nextInt(100); // 0~99
int a = r.nextInt(100) + 1; // 1~100
小游戏:猜数字
java
运行
import java.util.Scanner;
import java.util.Random;
public class GuessNumber {
public static void main(String[] args) {
Random r = new Random();
int ans = r.nextInt(100) + 1;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("猜数字(1-100):");
int num = sc.nextInt();
if (num > ans) {
System.out.println("大了");
} else if (num < ans) {
System.out.println("小了");
} else {
System.out.println("猜对了!");
break;
}
}
}
}
晚上(1.5h)综合练习题(必须独立完成)
1. 输出 1~100 内所有质数
java
运行
for (int i = 2; i <= 100; i++) {
boolean flag = true;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.print(i + " ");
}
}
2. 计算 1~10 的阶乘之和
java
运行
int total = 0;
for (int i = 1; i <= 10; i++) {
// 求 i 的阶乘
int fact = 1;
for (int j = 1; j <= i; j++) {
fact *= j;
}
total += fact;
}
System.out.println(total);
3. 打印倒三角形
java
运行
for (int i = 5; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
4. 统计 1~1000 能被 5 整除但不能被 3 整除的数
java
运行
for (int i = 1; i <= 1000; i++) {
if (i % 5 == 0 && i % 3 != 0) {
System.out.print(i + " ");
}
}
5. 模拟登录:3 次错误锁定
java
运行
Scanner sc = new Scanner(System.in);
int count = 3;
while (count > 0) {
System.out.print("输入密码:");
String pwd = sc.next();
if ("123456".equals(pwd)) {
System.out.println("登录成功");
break;
} else {
count--;
System.out.println("密码错误,剩余" + count + "次");
}
}
if (count == 0) {
System.out.println("账户锁定");
}
6. 录入 5 个成绩,求最高、最低、平均分
java
运行
Scanner sc = new Scanner(System.in);
int max = 0;
int min = 100;
int sum = 0;
for (int i = 1; i <= 5; i++) {
System.out.print("输入成绩:");
int s = sc.nextInt();
sum += s;
if (s > max) max = s;
if (s < min) min = s;
}
System.out.println("最高分:" + max);
System.out.println("最低分:" + min);
System.out.println("平均分:" + sum / 5.0);
必须达到的硬标准(自查)
- 熟练写 for /while/do–while
- 清晰区分 break /continue
- 独立写出 99 乘法表、质数、百钱百鸡
- 看懂嵌套循环
- 能用 Random 做小游戏
- 6 道综合题全部独立完成
更多推荐


所有评论(0)