- 0
- 191 words
案例一:猜数字游戏(综合运用)
先来一个经典的练手项目——猜数字。让你猜 1~100 之间的随机数,每次告诉你是大了还是小了,猜中为止并统计次数:
import java.util.Random;
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
// 1. 生成 1~100 的随机数
Random random = new Random();
int target = random.nextInt(100) + 1; // nextInt(100) 返回 0~99,+1 变成 1~100
// 2. 准备键盘输入和计数
Scanner sc = new Scanner(System.in);
int guess;
int count = 0;
System.out.println("====== 猜数字 ======");
System.out.println("我心里想了一个 1~100 之间的数,你来猜猜看");
// 3. 循环猜,直到猜对
do {
System.out.print("请输入你的猜测:");
guess = sc.nextInt();
count++;
if (guess < target) {
System.out.println("小了,再大点!");
} else if (guess > target) {
System.out.println("大了,再小点!");
} else {
System.out.println("恭喜你,猜对了!");
System.out.println("你一共猜了 " + count + " 次");
}
} while (guess != target);
sc.close();
}
}
这个例子覆盖了哪些知识点?
别看这个程序简单,猜数字的骨架可以扩展到猜单词、猜商品价格、抽奖系统……把 target 换成单词数组或价格区间就行。这就是”案例驱动”的魅力——练一个顶十个。
案例二:简易计算器(运算符综合)
用 switch 做一个支持加减乘除的简易计算器:
import java.util.Scanner;
public class SimpleCalculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一个数字:");
double num1 = sc.nextDouble();
System.out.print("请输入运算符(+ - * /):");
String operator = sc.next();
System.out.print("请输入第二个数字:");
double num2 = sc.nextDouble();
double result;
boolean valid = true;
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0) {
System.out.println("除数不能为 0!");
valid = false;
result = 0;
} else {
result = num1 / num2;
}
break;
default:
System.out.println("不支持的运算符:" + operator);
valid = false;
result = 0;
}
if (valid) {
System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
}
sc.close();
}
}
这个例子的知识点:
加个小改造:把循环套在外面,让用户能一直计算,直到输入 q 退出。试试自己动手改一改。
案例三:打印九九乘法表(循环嵌套)
这是几乎所有编程语言入门的”基本功”——用两层 for 循环打印乘法表:
public class MultiplicationTable {
public static void main(String[] args) {
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(); // 换行
}
}
}
输出效果:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
关键理解:
自己试试:如果把内层条件改成 j <= 9 会怎样?改成 j <= 9 - i + 1 呢?
案例四:判断质数(分支 + 循环配合)
判断一个数是不是质数(只能被 1 和自身整除):
import java.util.Scanner;
public class PrimeChecker {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int num = sc.nextInt();
if (num <= 1) {
System.out.println(num + " 不是质数");
} else {
boolean isPrime = true;
// 从 2 检查到 num 的平方根就行(优化点)
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
isPrime = false;
break; // 找到因数就退出循环
}
}
if (isPrime) {
System.out.println(num + " 是质数");
} else {
System.out.println(num + " 不是质数");
}
}
sc.close();
}
}
值得注意的优化:
用上一篇学的 break + 取模运算符 % 实现了一个很实用的判断工具。学语法的时候觉得”就这?”,真用起来才知道都是宝贝。
案例五:打印菱形图案(多重循环艺术)
这个案例看起来花哨,但实际就是在「空格和星号」之间做好数量控制:
import java.util.Scanner;
public class DiamondPattern {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入菱形的行数(奇数):");
int rows = sc.nextInt();
// 上半部分(含中间行)
int half = rows / 2 + 1;
for (int i = 1; i <= half; i++) {
// 打印前面的空格
for (int j = 1; j <= half - i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("* ");
}
System.out.println();
}
// 下半部分
for (int i = half - 1; i >= 1; i--) {
// 打印前面的空格
for (int j = 1; j <= half - i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("* ");
}
System.out.println();
}
sc.close();
}
}
输入 7 的输出效果:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
核心逻辑:上半部分每行有 2*i-1 个星号(i 从 1 开始),空格数 = half – i。下半部分反过来。掌握了这个规律,打印任何对称图形都不在话下。
小结与反思
这 5 个案例,用到的知识点全部来自前四篇:
| 案例 | 用到的知识点 |
|---|---|
| 猜数字 | Random、Scanner、if-else、do-while、比较运算符 |
| 简易计算器 | switch、算术运算符、nextDouble、布尔状态标记 |
| 乘法表 | for 嵌套、t 制表符、循环边界控制 |
| 判断质数 | break、取模 %、平方根优化、for + if 配合 |
| 菱形图案 | 多重 for 循环、空格与星号计数 |
学完了运算符、分支、循环,你已经能写出像模像样的交互程序了。别小看这些基础,它们是真真实实每天写代码都在用的东西。
下一步,我们要正式迈入 Java 真正的精华——面向对象编程。类与对象、构造方法、this 关键字、封装、继承、多态……这些概念听起来高大上,但等你敲出来第一个自己的对象,你会发现——原来代码还可以这么写。