Java基礎編程核心案例:從邏輯到應用

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 …