当前位置: 首页 > news >正文

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中条件判断与用户交互的核心用法:

  1. 基础语法if-else if-else结构、Scanner类的输入方法
  2. 数据处理:数值区间判断、字符串比较、多位数拆分
  3. 逻辑设计:嵌套条件、分支互斥、异常情况处理
  4. 交互流程:菜单设计、功能选择、闭环操作(如修改密码)

这些案例覆盖了成绩判断、商品计算、登录验证等实际场景,掌握这些知识后,可进一步扩展到更复杂的交互式应用开发。

http://www.dtcms.com/a/324938.html

相关文章:

  • 【经典算法】二叉树最小深度详解:递归解法与可视化分析
  • 深入解析C#并行编程:从并行循环到异步编程模式
  • PyCATIA深度解析:基于装配截面自动化创建参考几何平面群的专业方案
  • 锂电生产设备健康管理:基于预测性维护的智能化解决方案​
  • 【github.io静态网页 怎么使用 github.io 搭建一个简单的网页?】
  • Python与MySQL数据库交互实践:自动化数据插入系统
  • GPU版的Pytorch安装(Win11)
  • SpringBoot项目自定义静态资源映射规则
  • 【嵌入式】Linux的常用操作命令 (1)
  • SAP 121移动类型的说明
  • C野指针的概念与应对(源头、阻隔、定位)
  • STM32定时器与延时系统完整笔记
  • 【C#补全计划】万类之父中的方法
  • 使用单调栈解决力扣第42题--接雨水
  • 亚麻云之静态资源管家——S3存储服务实战
  • SSH远程连接TRAE时显示权限被拒绝检查方案
  • 游泳学习 — 蛙泳
  • 变量详解:创建初始化与内存管理
  • go加速配置(下载第三方库)
  • go语言运算符
  • Java变量的声明规则与Scanner的应用
  • 算法训练营day44 动态规划⑪ 1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列
  • BGP实验
  • (三)全栈(部署)
  • 数学建模——回归分析
  • 解决 Linux 下 “E: 仓库xxx没有数字签名” 问题
  • C++高频知识点(十九)
  • CentOS7.9 离线安装mysql数据库
  • Python vs MATLAB:智能体开发实战对比
  • 安卓录音方法