Java条件判断与用户交互实战案例
在Java编程中,条件判断和用户交互是构建交互式应用的基础。本专栏将通过8个实用案例,详细讲解if-else if-else
条件判断结构与Scanner
用户输入类的结合使用,涵盖数值比较、字符串处理、多分支判断等核心知识点。
案例一:根据考试成绩奖励机制(整数版)
功能说明:根据输入的整数成绩,判断并输出对应的奖励方案,适用于成绩为整数的场景。
package a1;
import java.util.Scanner; public class a1{ public static void main(String[] args) { System.out.println("请输入赵本山的考试成绩"); Scanner s = new Scanner(System.in); // 声明Scanner对象接收用户输入 int a = s.nextInt(); // 接收整数类型的成绩 // 多条件分支判断:按成绩区间划分奖励if(100 >= a && a >= 90) { // 90-100分区间System.out.println("买MP3"); } else if(89 >= a && a >= 60) { // 60-89分区间System.out.println("买参考书"); } else if(60 > a && a >= 0) { // 0-59分区间System.out.println("什么都不买"); } }
}
核心知识点:
Scanner
类的nextInt()
方法用于接收整数输入- 逻辑运算符
&&
表示"并且",用于限定区间范围 if-else if
结构实现多条件分支判断,按顺序执行第一个满足条件的分支
案例二:根据考试成绩奖励机制(浮点数版)
功能说明:在整数版基础上扩展,支持小数成绩输入,扩大适用场景。
package a1;
import java.util.Scanner; public class a1{ public static void main(String[] args) { System.out.println("请输入赵本山的考试成绩"); Scanner s = new Scanner(System.in); // 声明Scanner对象 double a = s.nextDouble(); // 接收浮点型成绩(支持小数) // 浮点数区间判断if(100 >= a && a >= 90) { System.out.println("买MP3"); } else if(90 > a && a >= 60) { // 注意区间衔接,避免遗漏边界值System.out.println("买参考书"); } else if(60 > a && a >= 0) { System.out.println("什么都不买"); } }
}
核心知识点:
nextDouble()
方法用于接收浮点型输入(如95.5分)- 浮点数区间判断需注意边界值处理(如90分属于第一个区间,89.9分属于第二个区间)
- 同一套逻辑可通过修改数据类型适配不同场景
案例三:买桃数量计算
功能说明:根据输入的基础购买数量,按规则计算最终获得的桃子数量,展示条件判断对变量的修改。
package a1;
import java.util.Scanner; public class a1{ public static void main(String[] args) { System.out.println("请输入买桃数"); Scanner s = new Scanner(System.in); int a = s.nextInt(); // 接收购买数量 // 根据数量区间修改变量值if(3 >= a && a >= 0) { // 0-3个:数量不变a = a; // 此句可省略,仅为展示逻辑 } else if(5 >= a && a > 3) { // 4-5个:额外赠送1个a = a + 1; } else if(a > 5) { // 6个及以上:额外赠送2个a = a + 2; } System.out.println("买了" + a + "个桃"); }
}
核心知识点:
- 条件判断中可直接修改变量值(如
a = a + 1
实现数量增加) - 区间划分需完整覆盖可能的输入范围(0及以上的整数)
- 分支逻辑可根据业务规则灵活设计(如阶梯式奖励)
案例四:水仙花数判断
功能说明:判断输入的三位数是否为水仙花数(各位数字的立方和等于该数本身),展示数值拆分与运算。
package a1;
import java.util.Scanner; public class a1{ public static void main(String[] args) { System.out.println("判断是否为水仙花数?请输入一个小于1000的三位数"); Scanner s = new Scanner(System.in); int a = s.nextInt(); // 接收三位数 // 拆分各位数字并计算立方double x = (a / 100) * (a / 100) * (a / 100); // 百位数字的立方double y = (a / 10 % 10) * (a / 10 % 10) * (a / 10 % 10); // 十位数字的立方double z = (a % 10) * (a % 10) * (a % 10); // 个位数字的立方 // 判断是否为水仙花数if (x + y + z == a) { // 立方和等于原数System.out.println("是水仙花数"); } else { // 立方和不等于原数System.out.println("不是水仙花数"); } }
}
核心知识点:
- 整数除法(
/
)和取余(%
)可用于拆分多位数的各位数字- 百位:
a / 100
(如371 → 371/100=3) - 十位:
a / 10 % 10
(如371 → 371/10=37 → 37%10=7) - 个位:
a % 10
(如371 → 371%10=1)
- 百位:
- 算术运算符
*
可用于计算立方(三次方) - 浮点数与整数比较时,Java会自动进行类型转换
案例五:根据名次决定奖励
功能说明:根据输入的名次字符串(如"第一名"),输出对应的奖励,展示字符串比较方法。
package a1;
import java.util.Scanner; public class a1{ public static void main(String[] args) { System.out.println("请输入名次"); Scanner s = new Scanner(System.in); String a = s.next(); // 接收字符串类型的名次 // 字符串比较需使用equals()方法if (a.equals("第一名")) { System.out.println("带薪休假一天"); } else if (a.equals("第二名")) { System.out.println("带薪休假半天"); } else if (a.equals("第三名")) { System.out.println("无薪休假一天"); } else { // 其他名次(未明确列出的情况)System.out.println("连续加班一周"); } }
}
核心知识点:
next()
方法用于接收字符串输入- 字符串比较必须使用
equals()
方法(如a.equals("第一名")
),不可用==
else
分支可用于处理所有未明确列出的情况,保证逻辑完整性
案例六:简单用户登录系统(版本一)
功能说明:实现用户名和密码验证,登录成功后可选择执行不同功能,展示嵌套条件判断。
package a1;
import java.util.Scanner; public class a1{ public static void main(String[] args) { System.out.println("请输入用户名"); Scanner s1 = new Scanner(System.in); String a = s1.next(); // 接收用户名 System.out.println("请输入用户密码"); Scanner s2 = new Scanner(System.in); String b = s2.next(); // 接收密码 // 嵌套条件判断:先验证用户名,再验证密码if (a.equals("123456")) { // 用户名正确if (b.equals("654321")) { // 密码正确// 登录成功,显示功能菜单System.out.println("登入成功,进入主界面\n"+ "请选择你想要执行的功能"+ "1.查询商品列表"+ "2.修改用户名和密码"); Scanner s3 = new Scanner(System.in); String c = s3.next(); // 接收功能选择 // 根据选择执行对应功能if (c.equals("1")) { System.out.println("查询商品列表"); } if (c.equals("2")) { System.out.println("执行修改用户名和密码的功能"); } } } }
}
核心知识点:
- 可创建多个
Scanner
对象分别处理不同输入 - 嵌套
if
结构(if
内部再写if
)可实现多条件递进验证 - 菜单式交互通过"输出选项→接收选择→执行对应功能"流程实现
案例七:简单用户登录系统(版本二)
功能说明:在版本一基础上优化,增加登录失败处理和更多功能选项,使用逻辑运算符简化判断。
package a1;
import java.util.Scanner; public class a1{ public static void main(String[] args) { System.out.println("请输入用户名"); Scanner s1 = new Scanner(System.in); String a = s1.next(); System.out.println("请输入用户密码"); Scanner s2 = new Scanner(System.in); String b = s2.next(); // 使用逻辑运算符&&简化判断(用户名和密码同时正确)if (a.equals("123456") && b.equals("654321")) { // 登录成功,显示功能菜单System.out.println("登入成功,进入主界面\n"+ "输入一个字母\n"+ "A.启动系统 B.插入数据 C.删除数据 D.修改数据 E.退出系统"); Scanner s3 = new Scanner(System.in); String c = s3.next(); // 接收字母选择 // 多分支功能处理if (c.equals("A")) { System.out.println("启动系统"); } if (c.equals("B")) { System.out.println("插入数据"); } if (c.equals("C")) { System.out.println("删除数据"); } if (c.equals("D")) { System.out.println("修改数据"); } if (c.equals("E")) { System.out.println("退出系统"); } } else { // 登录失败处理System.out.println("登录失败,退出"); } }
}
核心知识点:
- 逻辑运算符
&&
可将多个条件合并(如用户名正确 && 密码正确
) - 增加
else
分支处理异常情况(登录失败),提升用户体验 - 支持字母作为选项标识,需注意输入的大小写匹配(如输入"A"而非"a")
案例八:带密码修改功能的登录系统
功能说明:在登录系统基础上增加密码修改流程,展示完整的用户交互闭环。
package a1;
import java.util.Scanner; public class a1{ public static void main(String[] args) { System.out.println("请输入用户名"); Scanner s1 = new Scanner(System.in); String a = s1.next(); System.out.println("请输入用户密码"); Scanner s2 = new Scanner(System.in); String b = s2.next(); // 验证通过后进入功能菜单if (a.equals("123456") && b.equals("654321")) { System.out.println("登入成功,进入主界面\n"+ "请选择你想要执行的功能\n"+ "1.查询商品列表\n"+ "2.修改用户名和密码"); Scanner s3 = new Scanner(System.in); String c = s3.next(); // 分支功能:查询或修改if (c.equals("1")) { System.out.println("执行查询商品列表的功能"); } else if (c.equals("2")) { // 密码修改流程System.out.println("执行修改用户名和密码的功能"); // 接收并确认新密码System.out.println("请输入你的新密码"); Scanner s4 = new Scanner(System.in); String d = s4.next(); System.out.println("密码修改成功\n请牢记你的新密码" + d); } } }
}
核心知识点:
else if
结构可实现互斥的功能选择(选1则不执行2,反之亦然)- 复杂功能(如密码修改)可通过"提示→输入→反馈"三步实现完整流程
- 换行符
\n
可用于优化菜单显示格式,提升可读性
专栏总结
本专栏通过8个递进式案例,系统讲解了Java中条件判断与用户交互的核心用法:
- 基础语法:
if-else if-else
结构、Scanner
类的输入方法 - 数据处理:数值区间判断、字符串比较、多位数拆分
- 逻辑设计:嵌套条件、分支互斥、异常情况处理
- 交互流程:菜单设计、功能选择、闭环操作(如修改密码)
这些案例覆盖了成绩判断、商品计算、登录验证等实际场景,掌握这些知识后,可进一步扩展到更复杂的交互式应用开发。