实用指南:Java 基础编程案例:从输入交互到逻辑处理

在Java编程学习中,输入输出、循环控制和逻辑判断是核心基础。本文整理了10个经典案例,涵盖Scanner输入处理、斐波那契数列、成绩统计、登录验证等场景,帮助初学者掌握编程逻辑与实用技巧。

一、Scanner输入交互:获取用户输入并处理

Scanner是Java中处理用户输入的常用类,以下案例展示了如何通过Scanner实现不同场景的输入交互。

案例1:数字拆分与加法表

功能:接收用户输入的数字,打印所有“两个数相加等于该数字”的组合。

package a1;
import java.util.Scanner;
public class NumberSplitter
{
public static void main(String[] args) {
System.out.println("请输入一个数字");
Scanner s1 = new Scanner(System.in);
int a = s1.nextInt();
// 接收整数输入
// 循环打印所有相加等于a的组合
for (int i = 0; i <= a; i++) {
System.out.println(i + "+" + (a - i) + "=" + a);
}
}
}

解析

  • 通过Scanner.nextInt()获取用户输入的整数。
  • 外层循环遍历从0到a的所有整数i,计算对应的另一个加数a-i,打印加法公式。

案例2:跑步进度交互

功能:模拟跑步进度提示,每跑400米询问用户状态,根据输入决定继续或休息。

package a1;
import java.util.Scanner;
public class RunningTracker
{
public static void main(String[] args) {
// 从400米开始,每次递增400米,直到4000米
for (int i = 400; i <= 4000; i += 400) {
System.out.println("你已经跑了" + i + "米,累了吗?");
Scanner s1 = new Scanner(System.in);
String a = s1.next();
// 接收字符串输入
// 根据用户输入判断后续操作
if (a.equals("累了")) {
System.out.println("休息!");
break;
// 退出循环,停止跑步
} else if (a.equals("不累")) {
System.out.println("继续跑!");
} else {
System.out.println("输入错误,继续跑!");
}
}
}
}

解析

  • 外层循环以400米为间隔递增,模拟跑步进度。
  • 通过Scanner.next()接收用户输入的字符串(“累了”“不累”或其他),用equals()方法比较字符串,实现分支逻辑。

案例3:成绩录入与平均分计算

功能:接收5门课程的成绩,计算并打印平均分。

package a1;
import java.util.Scanner;
public class ScoreAverage
{
public static void main(String[] args) {
System.out.println("请输入你的姓名");
Scanner s1 = new Scanner(System.in);
String name = s1.next();
// 接收姓名
double sum = 0;
// 总成绩
for (int i = 1; i <= 5; i++) {
System.out.println("请输入你第" + i + "门的成绩");
Scanner s2 = new Scanner(System.in);
int score = s2.nextInt();
// 接收成绩
if (score >
0) {
// 简单校验成绩有效性
sum += score;
} else {
System.out.println("输入错误");
}
}
System.out.println(name + "的平均分为" + (sum / 5));
}
}

解析

  • sum变量累加有效成绩,通过循环接收5门成绩。
  • 注意:实际开发中需完善成绩校验(如0-100分范围),此处仅做简单判断。

二、斐波那契数列:经典数学序列的实现

斐波那契数列是指从0和1开始,后续每一项都是前两项之和(如0, 1, 1, 2, 3, 5…)。

案例4:打印前20项斐波那契数

package a1;
public class FibonacciSequence
{
public static void main(String[] args) {
int a = 0;
// 第n-2项
int b = 1;
// 第n-1项
int c = 0;
// 第n项(结果)
for (int i = 1; i <= 20; i++) {
c = a + b;
// 计算当前项
a = b;
// 更新前两项的值
b = c;
System.out.println(c);
// 打印当前项
}
}
}

解析

  • 初始值a=0b=1,通过循环计算第3项到第20项(c = a + b)。
  • 每次循环后更新ab的值,确保下一次计算正确。

三、成绩统计:分数区间判断与分析

案例5:成绩等级判断与优秀率计算

功能:输入5门成绩,判断每门成绩的等级(不合格/良好/优秀),统计80分以上的人数及平均分。

package a1;
import java.util.Scanner;
public class ScoreAnalyzer
{
public static void main(String[] args) {
double sumExcellent = 0;
// 80分以上成绩总和
int countExcellent = 0;
// 80分以上人数
for (int i = 1; i <= 5; i++) {
System.out.println("请输入你第" + i + "门的成绩");
Scanner s2 = new Scanner(System.in);
int score = s2.nextInt();
// 判断成绩等级
if (score >= 0 && score <= 60) {
System.out.println("成绩不合格");
} else if (score >
60 && score <= 80) {
System.out.println("成绩良好");
} else if (score >
80 && score <= 100) {
System.out.println("成绩优秀");
sumExcellent += score;
countExcellent++;
} else {
System.out.println("输入错误");
}
}
// 打印统计结果(注意避免除以0)
if (countExcellent >
0) {
System.out.println("成绩大于80分的人数为" + countExcellent
+ "。平均成绩为" + (sumExcellent / countExcellent));
} else {
System.out.println("没有成绩大于80分的科目");
}
}
}

解析

  • 用多重if-else判断成绩区间,对80分以上的成绩单独累加和计数。
  • 最后判断优秀人数是否为0,避免除法运算出错。

四、机会限制问题:登录验证与输入次数控制

案例6:密码验证(3次机会)

功能:用户输入密码,最多有3次机会,正确则登录成功,失败3次则冻结账户。

package a1;
import java.util.Scanner;
public class PasswordValidator
{
public static void main(String[] args) {
System.out.println("请输入你的密码");
for (int i = 1; i <= 3; i++) {
// 限制3次机会
Scanner s2 = new Scanner(System.in);
String password = s2.next();
if (password.equals("666666")) {
// 假设正确密码为666666
System.out.println("成功进入主界面");
break;
// 验证通过,退出循环
} else {
int remaining = 3 - i;
// 计算剩余机会
System.out.println("输入错误,你还有" + remaining + "次机会");
if (remaining == 0) {
System.out.println("用户卡被冻结,不能再输了");
}
}
}
}
}

解析

  • 循环次数i从1到3,通过3 - i计算剩余机会。
  • 验证成功用break退出循环,失败3次后提示账户冻结。

案例7:用户名+密码双重验证

功能:同时验证用户名和密码,3次失败则锁定,每次失败后可重新输入。

package a1;
import java.util.Scanner;
public class UserLogin
{
public static void main(String[] args) {
// 初始输入用户名和密码
System.out.println("请输入用户名");
Scanner s = new Scanner(System.in);
String username = s.next();
System.out.println("请输入密码");
Scanner s2 = new Scanner(System.in);
String password = s2.next();
for (int i = 1; i <= 3; i++) {
if (username.equals("666666") && password.equals("666666")) {
System.out.println("成功进入主界面");
break;
} else {
int remaining = 3 - i;
System.out.println("输入错误!你还有" + remaining + "次机会!");
if (remaining == 0) {
System.out.println("对不起,您3次均输入错误!");
} else {
// 重新输入用户名和密码
System.out.println("请输入用户名");
Scanner s3 = new Scanner(System.in);
username = s3.next();
System.out.println("请输入密码");
Scanner s4 = new Scanner(System.in);
password = s4.next();
}
}
}
}
}

解析

  • 双重验证条件username.equals(...) && password.equals(...)确保两者都正确。
  • 每次失败后重新接收输入,更新usernamepassword的值。

案例8:会员信息录入与验证

功能:录入会员信息(4位会员号、生日、积分),验证会员号有效性(1000-9999之间)。

package a1;
import java.util.Scanner;
public class MemberInfo
{
public static void main(String[] args) {
// 循环录入2条会员信息
for (int i = 1; i <= 2; i++) {
System.out.println("请输入会员号(<4位整数>):");
  Scanner s = new Scanner(System.in);
  int memberId = s.nextInt();
  System.out.println("请输入会员生日(月/日<用两位整数表示>):");
    Scanner s22 = new Scanner(System.in);
    String birthday = s22.next();
    System.out.println("请输入会员积分:");
    Scanner s3 = new Scanner(System.in);
    int points = s3.nextInt();
    // 打印信息并验证会员号
    System.out.println(memberId + " " + birthday + " " + points);
    if (!(memberId >
    1000 && memberId <
    10000)) {
    System.out.println("客户号" + memberId + "是无效会员号!\n输入信息失败");
    }
    }
    }
    }

解析

  • 循环2次录入会员信息,包含整数(会员号、积分)和字符串(生日)。
  • !(memberId > 1000 && memberId < 10000)判断会员号是否为4位有效数字。

五、数组操作:字符串数组的定义与遍历

案例9:遍历打印字符串数组

功能:定义包含3个姓名的数组,通过循环打印所有元素。

package a1;
public class NameArray
{
public static void main(String[] args) {
String names[] = {
"张三", "李四", "王五"
};
// 定义字符串数组
// 遍历数组(a.length获取数组长度)
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}

解析

  • 数组定义:String[] 数组名 = {元素1, 元素2, ...}
  • 数组名.length获取长度,避免硬编码索引,提高灵活性。

案例10:动态录入数组元素

功能:通过Scanner接收5个学生姓名,存储到数组中并打印。

package a1;
import java.util.Scanner;
public class StudentArray
{
public static void main(String[] args) {
String[] students = new String[5];
// 定义长度为5的字符串数组
Scanner s = new Scanner(System.in);
// 录入5个学生姓名
for (int i = 0; i < students.length; i++) {
System.out.println("请输入第" + (i + 1) + "个学生的姓名");
students[i] = s.next();
// 为数组元素赋值
}
// 打印所有姓名
System.out.println("你输入的5个学生的姓名为:");
for (int i = 0; i < students.length; i++) {
System.out.println(students[i] + " ");
}
}
}

解析

  • 数组初始化:new String[5]创建长度为5的空数组。
  • 通过循环为每个索引赋值,再遍历打印,体现数组的动态使用。

总结:基础逻辑的核心应用

以上案例覆盖了Java编程的核心基础:

  • 输入处理Scanner类的nextInt()(整数)和next()(字符串)方法。
  • 循环控制for循环的计数、范围控制,break的退出逻辑。
  • 逻辑判断if-else分支、equals()字符串比较、逻辑运算符(&&)。
  • 数组操作:初始化、长度获取(length)、遍历与赋值。

初学者可通过修改案例参数(如斐波那契数列的项数、成绩的分数区间)加深理解,逐步掌握“输入-处理-输出”的编程思维。

posted @ 2025-08-16 17:13  yjbjingcha  阅读(22)  评论(0)    收藏  举报