Java编程的核心在于将逻辑思维转化为可执行的代码。本专栏通过8个实用案例,覆盖条件判断、循环结构、数组操作、用户交互等基础知识点,展示如何用Java解决实际问题,从简单游戏到数据计算,逐步构建编程思维。

案例一:剪刀石头布游戏——随机数与条件判断的结合

功能说明:实现玩家与计算机的剪刀石头布对战,通过随机数模拟计算机出拳,用条件判断决定胜负。

package a1;import java.util.Random;
import java.util.Scanner;public class RockPaperScissors {public static void main(String[] args) {System.out.println("请输入你的出拳:1.剪刀 2.石头 3.布");Scanner scanner = new Scanner(System.in);int userChoice = scanner.nextInt();  // 接收玩家出拳(1-3)Random random = new Random();int computerChoice = random.nextInt(3) + 1;  // 计算机随机出拳(1-3)System.out.println("你的出拳是:" + userChoice);System.out.println("计算机的出拳是:" + computerChoice);// 胜负判断逻辑:通过差值规律简化条件if (userChoice - computerChoice == 1 || userChoice - computerChoice == -2) {// 玩家赢的两种情况:1-0(剪刀胜布)、2-1(石头胜剪刀)、3-2(布胜石头)System.out.println("你赢了");} else if (userChoice - computerChoice == 0) {// 出拳相同则平局System.out.println("平局");} else {// 其余情况计算机赢System.out.println("你输了");}scanner.close();}
}

核心知识点

  • 类名采用帕斯卡命名法(首字母大写),变量名采用驼峰命名法
  • 导入语句单独成行,代码块使用4空格缩进
  • Random类的nextInt(n)方法生成随机数,Scanner使用后关闭资源
  • 逻辑判断条件清晰,添加适当空格增强可读性

案例二:闰年判断——逻辑运算符的灵活应用

功能说明:根据闰年规则(能被4整除且不能被100整除,或能被400整除)判断输入年份是否为闰年,展示条件简化技巧。

版本一:基础分支判断

package a1;import java.util.Scanner;public class LeapYearChecker {public static void main(String[] args) {System.out.println("输入一个年份");Scanner scanner = new Scanner(System.in);int year = scanner.nextInt();if (year % 4 == 0 && year % 100 != 0) {// 能被4整除但不能被100整除System.out.println("是闰年");} else if (year % 400 == 0) {// 能被400整除System.out.println("是闰年");} else {// 其余情况System.out.println("不是闰年");}scanner.close();}
}

版本二:简化条件判断

package a1;import java.util.Scanner;public class LeapYearCheckerSimplified {public static void main(String[] args) {System.out.println("输入一个年份");Scanner scanner = new Scanner(System.in);int year = scanner.nextInt();// 用逻辑运算符||合并两个闰年条件if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {System.out.println("是闰年");} else {System.out.println("不是闰年");}scanner.close();}
}

核心知识点

  • 运算符前后添加空格(如year % 4 == 0而非year%4==0
  • 合理使用空行分隔不同逻辑块,增强可读性
  • 复杂条件添加适当注释说明逻辑含义
  • 不同版本使用不同类名区分,符合命名规范

案例三:月份天数计算——switch多分支与闰年联动

功能说明:根据输入的年份和月份,计算该月的天数,特别处理2月份在闰年和平年的差异。

package a1;import java.util.Scanner;public class MonthDaysCalculator {public static void main(String[] args) {System.out.println("输入一个年份");Scanner scanner = new Scanner(System.in);int year = scanner.nextInt();System.out.println("输入一个月份");int month = scanner.nextInt();// switch多分支处理12个月份switch (month) {// 31天的月份(1、3、5、7、8、10、12)case 1:case 3:case 5:case 7:case 8:case 10:case 12:System.out.println("31天");break;// 2月份需判断闰年case 2:if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {System.out.println("29天");  // 闰年2月} else {System.out.println("28天");  // 平年2月}break;// 30天的月份(4、6、9、11)case 4:case 6:case 9:case 11:System.out.println("30天");break;default:System.out.println("无效的月份");}scanner.close();}
}

核心知识点

  • switch语句中每个case单独成行,增强可读性
  • 添加default分支处理异常情况(无效月份)
  • 合理使用空行分隔不同case组,逻辑更清晰
  • 一个Scanner对象可复用,无需重复创建

案例四:计算某年某月某日是该年的第几天——数组与循环的综合应用

功能说明:输入日期(年、月、日),计算该日期是当年的第几天,考虑闰年对2月份的影响。

package a1;import java.util.Scanner;public class DayOfYearCalculator {public static void main(String[] args) {System.out.println("输入年");Scanner scanner = new Scanner(System.in);int year = scanner.nextInt();System.out.println("输入月");int month = scanner.nextInt();System.out.println("输入日");int day = scanner.nextInt();System.out.println("是" + year + "年" + month + "月" + day + "日");int totalDays = day;  // 初始值为当月天数// 根据闰年定义不同的月份天数数组if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {// 闰年月份天数数组(2月29天)int[] daysInMonth = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};// 累加前几个月的天数(month-1是因为数组下标从0开始)for (int i = 0; i < month - 1; i++) {totalDays += daysInMonth[i];}} else {// 平年月份天数数组(2月28天)int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};for (int i = 0; i < month - 1; i++) {totalDays += daysInMonth[i];}}System.out.println("是该年的第" + totalDays + "天");scanner.close();}
}

核心知识点

  • 数组定义格式规范,初始化值清晰排列
  • for循环格式规范,循环变量声明在循环内部
  • 代码块之间添加空行,区分不同逻辑段落
  • 变量命名语义化(如daysInMonth而非arr

案例五:计算数据增长年份——while循环与迭代计算

功能说明:计算初始值在固定年增长率(25%)下,达到目标值所需的年份,展示循环的迭代计算能力。

package a1;public class GrowthYearCalculator {public static void main(String[] args) {int year = 2006;  // 起始年份double amount = 80000;  // 初始值// 循环条件:未达到目标值(200000)while (amount <= 200000) {amount = amount + amount * 0.25;  // 每年增长25%year++;  // 年份加1}System.out.println(year + "年达到目标");}
}

核心知识点

  • 循环体内部语句缩进规范,逻辑清晰
  • 变量声明添加注释说明用途
  • 算术表达式添加适当空格(如amount + amount * 0.25
  • 代码简洁紧凑,无多余空行

案例六:循环与数组访问——数组越界问题的警示

功能说明:展示循环访问数组的基本方法,同时暴露数组越界的常见错误(反面案例)。

package a1;public class ArrayIndexWarning {public static void main(String[] args) {System.out.println();int i = 0;// 错误示例:循环次数超过数组长度while (i < 5) {  // 循环5次(i=0到4)System.out.println(i);String[] ss = {"1", "2"};  // 数组长度为2(下标0和1)// 错误:当i=2、3、4时,ss[i]超出数组下标范围(0-1)System.out.println(ss[i]);i++;}}
}

核心知识点

  • 即使是反面案例,仍保持基本格式规范
  • 错误位置添加注释说明问题所在
  • 变量和数组命名符合规范
  • 展示了数组越界的典型场景,警示循环条件与数组长度匹配的重要性

案例七:计算1-100偶数之和——循环与条件过滤的结合

功能说明:计算1到100之间所有偶数的和,并输出累加过程,展示循环中筛选数据的方法。

package a1;public class EvenNumberSum {public static void main(String[] args) {int sum = 0;  // 累加和初始化为0int i = 1;while (i <= 100) {  // 遍历1到100if (i % 2 == 0) {  // 筛选偶数(能被2整除)sum += i;  // 累加偶数System.out.println((i / 2) + "个偶数的和为" + sum);  // 输出中间结果}i++;  // 变量自增}System.out.println("所有偶数的总和是:" + sum);}
}

核心知识点

  • 条件判断与循环体保持正确缩进
  • 复合赋值运算符+=使用规范
  • 输出语句格式清晰,拼接合理
  • 逻辑流程清晰:初始化→循环→判断→累加→输出

案例八:商品购买系统——循环优化与用户交互流程

功能说明:实现支持连续购买的商品选购系统,对比基础版与优化版的代码效率差异。

版本二:优化版(减少重复代码)

package a1;import java.util.Scanner;public class ShoppingSystem {public static void main(String[] args) {String continueFlag = "yes";  // 控制循环的标志位Scanner scanner = new Scanner(System.in);// 循环直接包含完整购买流程,避免重复代码while (continueFlag.equals("yes")) {System.out.println("选择购买的商品编号 1.T恤衫 2.网球衫");int choice = scanner.nextInt();scanner.nextLine();  //  consume newlineif (choice == 1) {System.out.println("购买的是T恤衫");} else if (choice == 2) {System.out.println("购买的是网球衫");} else {System.out.println("无效的商品编号");}System.out.println("是否继续购买?yes继续购买 no退出购买");continueFlag = scanner.nextLine();  // 更新标志位}System.out.println("退出购买");scanner.close();}
}

核心知识点

  • 只创建一个Scanner对象并复用,避免资源浪费
  • 循环结构清晰,将完整流程包含在内,减少代码冗余
  • 添加else分支处理无效输入,增强程序健壮性
  • 使用scanner.nextLine()处理字符串输入,避免输入格式问题
  • 最后关闭Scanner资源,符合规范

代码规范总结

本专栏案例均遵循以下Java代码规范:

  1. 命名规范

    • 类名:帕斯卡命名法(首字母大写,如RockPaperScissors
    • 变量名:驼峰命名法(首字母小写,如userChoice
    • 常量名:全大写+下划线(如MAX_VALUE
  2. 格式规范

    • 缩进:4个空格(不使用Tab)
    • 换行:每个语句单独一行,左大括号{不单独换行
    • 空格:运算符前后、逗号后加空格(如a + b而非a+b
    • 空行:逻辑块之间添加空行,增强可读性
  3. 代码结构

    • 导入语句:单独成行,按字母顺序排列
    • 类结构:成员变量→构造方法→普通方法
    • 方法内部:先声明变量→初始化→业务逻辑→输出
  4. 资源管理

    • Scanner等资源使用后需关闭
    • 避免重复创建对象(如一个Scanner对象可复用)

遵循这些规范编写的代码,具有更好的可读性、可维护性和一致性,是团队协作和代码复用的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95041.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95041.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/95041.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Starlink卫星终端对星策略是终端自主执行的还是网管中心调度的?

以下文章首先来源于Google Gemini的Deep Research的内容,在Deep Research的报告参考了SpaceX公开信息、FCC技术报告、相关专利(如US9906292B2)以及学术研究的综合分析,并参考了RFWirelessWorld和APNIC博客等二次来源。 文章完成之后,前后发给了Grok和deepseek,让Grok和d…

【CDA案例】数据分析案例拆解:解锁数据分析全流程!

在当今数字化时代&#xff0c;数据如同一座座金矿&#xff0c;蕴含着巨大的价值。企业、组织乃至个人都渴望从海量的数据中挖掘出有用的信息&#xff0c;以指导决策、优化运营、提升竞争力。今天我们以一个实际的数据分析案例为蓝本&#xff0c;深入拆解其全过程&#xff0c;带…

vulnhub-drippingblues靶场攻略

1.打开靶场&#xff0c;我们将网络连接方式改为NAT模式2.然后使用nmap扫描一下nat的网段3.存在21&#xff0c;22&#xff0c;80端口我们先来看一下21端口的ftp协议&#xff0c;发现可以直接匿名登录&#xff0c;并且可以下载存在的东西4.但是这个压缩包被加密了&#xff0c;我们…

afsim2.9_使用QtCreator和VSCode编译

使用QtCreator和VSCode编译AFSIM2.9源代码指南 准备工作 在开始编译AFSIM2.9源代码前&#xff0c;需要确保您的开发环境满足以下条件&#xff1a; 安装QtCreator安装Visual Studio Code&#xff08;最新稳定版&#xff09;获取AFSIM2.9源代码包安装必要的编译工具链&#xf…

TC39x STM(System Timer)学习记录

STM有哪些特性&#xff1f;自由运行的 64 位计数器所有 64 位可同步读取可同步读取 64 位计数器的不同 32 位部分基于与 STM 部分内容的比较匹配&#xff0c;灵活地产生服务请求在应用复位后自动开始计数若 ARSTDIS.STMxDIS 位清零&#xff0c;应用复位将复位 STM 寄存器&#…

css初学者第四天

<1>snipaste工具的使用snipaste是一个简单但强大的截图工具&#xff0c;也可以让你将截图贴回屏幕上。常用的快捷方式&#xff1a;1、F1可以截图&#xff0c;同时测量大小&#xff0c;设置箭头 书写文字等2、F3在桌面置顶显示3、点击图片&#xff0c;alt可以取色&#xf…

CompletableFuture实现Excel 多个sheet页批量导出

CompletableFuture实现Excel 多个sheet页批量导出 文章目录 CompletableFuture实现Excel 多个sheet页批量导出 为什么不能直接合并文件或Sheet? 我的方案合理性 1. 操作实现步骤 1.1、导入所需要的依赖 1.2 、Excel 导入导出对象 1.3、异步生成 Excel 文件到指定路径 1.4、合并…

搭建本地 Git 服务器

以下是搭建本地 Git 服务器的通用步骤&#xff0c;支持团队协作或私有仓库管理&#xff1a;方法 1&#xff1a;基于 SSH 的简单部署&#xff08;适合小团队&#xff09; 步骤 1&#xff1a;安装 Git 在服务器上安装 Git&#xff08;以 Ubuntu 为例&#xff09;&#xff1a; sud…

【Matplotlib】中文显示问题

中文显示问题本地Mac上作图&#xff0c;可以方便地实现中文字体显示。比如在Jupter中&#xff0c;通过&#xff1a;方法一&#xff1a;不下载字体库即可实现中文显示 (MAC)plt.rcParams[font.family][Arial Unicode MS]方法二&#xff1a;下载指定字体训即可实现中文显示plt.rc…

从“单体崩溃”到“稳定如山”:Java 构建高可用、低耦合架构实战指南

引言&#xff1a; 你是否经历过这样的痛苦&#xff1f;某个模块突然异常&#xff0c;整个系统瞬间崩盘&#xff0c;排查日志堆积如山&#xff0c;客户投诉不断。系统耦合严重、容错性差&#xff0c;成了上线最忌惮的“隐雷”。 而今天&#xff0c;我们要带你深入剖析如何通过事…

人工智能正在学习自我提升的方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Numpy基础(广播机制)

广播机制 Numpy的Universal functions中要求输入的数组shape是一致的&#xff0c;当数组的shape不相等 时&#xff0c;则会使用广播机制。不过&#xff0c;调整数组使得shape一样&#xff0c;需要满足一定的规则&#xff0c;否则将 出错。这些规则可归纳为以下4条。 1&#xff…

reuse: for booting my spring project with mvn in Windows command line

boot.bat echo off setlocal enabledelayedexpansion:: 定义帮助信息 set HELP_MSG使用方法: %0 [选项,可选-m,-j,-h] [参数...]:: 默认启动方式为 mvn set MODEmvn set ARGS:: 解析命令行参数 :parse_args if "%~1""" goto end_parseif "%~1"&q…

NodeJs学习日志(4):路由合并_环境配置_常用文件目录

路由合并_环境配置_常用文件目录 路由合并 // routes/routes.js const express require(express); const router express.Router();// 合并子路由 var indexRouter require(../routes/index); var usersRouter require(../routes/users);router.use(/, indexRouter); route…

✨TRAE SOLO + Holopix AI | 轻松实现 “虚假广告“-转[特殊字符]割草小游戏

引言 &#x1f636; 两周前 (7.21) Trae-国际版 正式发布「SOLO」模式&#xff0c;需要 Pro 账户&#xff0c;邀请码一度 “难求”&#xff0c;海鲜市场还有人挂出 500块的 “天价”&#xff0c;这都能炒&#xff1f;我是无法理解的&#x1f937;‍♀️&#xff0c;目前一个月…

redis集群-本地环境

* Linux 本地集群&#xff1a;3主3从yum install -y gccyum install -y wgetyum install -y vimwget http://download.redis.io/releases/redis-7.2.5.tar.gztar -zxvf redis-7.2.5.tar.gzcd redis-7.2.5/makemake PREFIX/usr/local/redis install# 配置系统环境变量vim /etc/p…

海关 瑞数 失信企业 逆向 分析 后缀 rs

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;部分python代码headers {Accept: appl…

用 Postman 的 Tests 脚本,这行代码断言接口返回,自动化测试省一半事

本文聚焦 Postman 的 Tests 脚本在接口自动化测试中的核心作用&#xff0c;阐述如何通过编写 Tests 脚本实现接口返回的自动断言&#xff0c;从而大幅提升测试效率。文中详细介绍了 Tests 脚本的基础语法、常用断言方法、实战案例及优化技巧&#xff0c;涵盖从简单响应状态码校…

7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序

一、数据单位&#xff08;数据长度类型&#xff09;术语名称位数所占字节说明Bit位1 bit1/8 Byte最小数据单位&#xff08;0或1&#xff09;BByte 字节8 bit1 Byte字节单位WWord 字16 bit2 Byte通常用于整数、状态字等DWDouble Word 双字32 bit4 Byte常用于浮点、双整数 1双字 …

大型动作模型LAM:让企业重复任务实现80%效率提升的AI技术架构与实现方案

现代企业运营中&#xff0c;重复性任务的自动化处理已成为提升组织效率的核心需求。从基础数据录入到复杂工作流管理&#xff0c;企业持续寻求技术创新来降低人工成本、减少操作错误&#xff0c;并将人力资源重新配置到更具价值的战略性工作中。大型动作模型&#xff08;Large …