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")) { // 假設正確密碼為666666System.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)、遍歷與賦值。

初學者可通過修改案例參數(如斐波那契數列的項數、成績的分數區間)加深理解,逐步掌握“輸入-處理-輸出”的編程思維。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92993.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92993.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92993.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode 面試經典 150_數組/字符串_整數轉羅馬數字(18_12_C++_中等)(模擬)(對各位進行拆解)

LeetCode 面試經典 150_數組/字符串_整數轉羅馬數字&#xff08;18_12_C_中等&#xff09;題目描述&#xff1a;輸入輸出樣例&#xff1a;題解&#xff1a;解題思路&#xff1a;思路一&#xff08;模擬&#xff09;&#xff1a;思路二&#xff08;對各位進行拆解&#xff09;&a…

計算機網絡摘星題庫800題筆記 第6章 應用層

第6章 應用層 6.1 網絡應用的架構 考點 1 CS 架構 題組闖關 1.DNS 是基于 ( ) 模式的分布式系統。 A. C/S B. B/S C. P2P D. 以上均不正確 1.【參考答案】A 【解析】本題考查網絡應用模型。 DNS 作為分布式應用&#xff0c;是一種典型的 C/S 模式&#xff0c;是隨著 Internet 技…

BLUCK電路的輸入電容應該怎么選取

借用TI的BULK芯片討論一下輸入電容怎么選取的問題&#xff0c;BULK電源是我們常用的電源&#xff0c;它的原理請看之前的文章&#xff1a; 高壓差為何不用LDO&#xff1f;DCDC效率更高&#xff01;-CSDN博客 本文我們探討一下輸入電容&#xff0c;輸入電容是控制紋波的關鍵&a…

CAN仲裁機制的原理

我們來詳細講 CAN 仲裁機制 的原理和工作方式,這是 CAN 總線最核心的特性之一。 1?? 基本概念 CAN 總線是 多主機、多節點的串行總線,所有節點共享一根差分信號線(CAN_H / CAN_L)。 每個節點都可以隨時發送消息(多主機機制) 總線只能同時有一個節點成功發送 仲裁 用…

【GPT入門】第46課 vllm安裝、部署與使用

【GPT入門】第46課 vllm安裝、部署與使用 1.準備服務器 2. 安裝 conda環境,隔離base環境 3. vllm使用 3.1 在線推理, openai兼容服務器 3.2 模型離線調用 4. 沒有使用GPU問題分析 1.準備服務器 cuda 版本選12.1 vllm官網介紹: https://vllm.hyper.ai/docs/getting-started/…

【從網絡基礎到實戰】理解TCP/IP協議體系的核心要點(包含ARP協議等其他協議介紹)

前言&#xff1a; 學習計算機網絡不僅是軟件開發的基礎功&#xff0c;更是成為一名合格后端工程師、網絡工程師的重要門檻。本文將基于 TCP/IP 協議體系&#xff0c;系統梳理網絡層、數據鏈路層、以及相關協議的核心知識&#xff0c;并結合實際案例與代碼示例幫助理解。一、網絡…

Python 元類基礎:從理解到應用的深度解析

在 Python 的高級編程中&#xff0c;元類&#xff08;metaclass&#xff09; 無疑是最神秘又最強大的特性之一。它不僅是構建類的“工廠”&#xff0c;更是 Python 靈活對象模型的體現。本文將帶你從基礎概念入手&#xff0c;深入理解元類的本質、工作機制以及實際應用&#xf…

Nginx 配置代理服務器的詳細方法

一、什么是代理服務器&#xff1f; 類型說明正向代理客戶端通過代理訪問目標服務器&#xff08;隱藏客戶端身份&#xff09;反向代理客戶端訪問代理服務器&#xff0c;由代理服務器請求后端服務器&#xff08;隱藏后端服務器&#xff09; 二、Nginx 反向代理配置方法&#xff…

Lombok插件介紹及安裝(Eclipse)

一、Lombok 的用途 Lombok是一個 Java 庫&#xff0c;通過注解的方式簡化 Java 代碼的編寫。它能夠自動生成常見的代碼&#xff0c;如getter、setter、toString、equals、hashCode等方法&#xff0c;從而減少樣板代碼&#xff0c;使代碼更加簡潔、易讀。 Lombok 通過添加**Dat…

硬核操作!Go 語言生成 “會爬墻的清潔機器人”,玻璃外墻自己擦

本文聚焦于利用 Go 語言開發 “會爬墻的清潔機器人” 這一硬核技術&#xff0c;圍繞該機器人如何實現玻璃外墻自主清潔展開。首先介紹開發背景與需求&#xff0c;接著闡述 Go 語言在其中的優勢&#xff0c;詳細講解機器人的核心技術&#xff0c;包括吸附系統、運動控制、清潔機…

Qt——實現”Hello World“、認識對象樹與Qt坐標系

在創建項目時&#xff0c;使用的基類Base Class為QWidget 1. 使用圖形化界面的方式實現“Hello World” 雙擊文件&#xff1a;widget.ui&#xff0c;進入designer模式&#xff1a;在“控件盒子”的“Display Widgets”中找到“Label”&#xff0c;并拖放到白板中雙擊剛剛拖放到…

智能合約開發全流程實戰指南

目錄 靈感探索與概念驗證合約開發常見問題 Hardhat 初始化項目問題合約編譯錯誤處理智能合約設計缺陷 合約測試最佳實踐 單元測試環境配置測試用例編寫技巧測試覆蓋率和策略常見測試失敗原因 合約部署實戰指南 部署到不同網絡部署前準備事項部署后驗證方法部署費用和Gas優化 合…

IPA1299至為芯替代TI ADS1299的腦機接口芯片

在腦機接口、神經科學研究和醫療電子設備領域&#xff0c;腦電信號采集芯片是連接生物電信號與數字世界的重要組件。目前&#xff0c;TI等國際廠商憑借技術優勢占據市場主要份額&#xff0c;國內廠商在成本控制、供貨周期和技術自主性方面面臨挑戰。英集芯推出的IPA1299低噪聲多…

「數據獲取」《中國海洋生態環境狀況公報》(2001-2023年)(獲取方式看綁定的資源)

01、數據簡介在 2023 年的海洋環境監測工作中&#xff0c;監測范圍廣泛且細致。全年對 1359 個海洋環境質量國家控制點位進行了水質監測&#xff0c;這些點位分布在我國管轄的各大海域&#xff0c;能夠全面反映海洋整體水質狀況&#xff1b;對 230 個入海河流國家控制斷面開展監…

通過限制網絡訪問來降低服務器被攻擊風險的方法

限制網絡訪問是降低服務器被攻擊風險的核心思路之一&#xff0c;因為絕大多數入侵都是從開放的網絡入口開始的。思路是“減少暴露面 精確授權”&#xff0c;讓服務器只對必要的人、必要的業務開放。我給你分成幾個層次來說明&#xff0c;從最外層網絡入口到最內層系統配置都涉…

python與JavaScript的區別

Python 與 JavaScript 的主要區別&#xff08;按常用維度劃分&#xff09;維度PythonJavaScript誕生時間 / 背景1991 年&#xff0c;由 Guido van Rossum 設計&#xff0c;目標是“一種易讀、易寫的通用腳本語言”。1995 年&#xff0c;由 Brendan Eich 為 Netscape 瀏覽器誕生…

Java 比較器解析

一、比較器的核心作用與應用場景在 Java 編程中&#xff0c;數據比較是一個基礎但重要的操作。對于基本數據類型&#xff08;如 int、double、boolean、char 等&#xff09;&#xff0c;Java 語言本身就提供了完整的比較運算符&#xff08;>、<、、>、<、!&#xf…

Java學習第一百二十一部分——HTTP

目錄 一、前言簡介 二、核心特性 三、通信基礎結構 四、關鍵組件詳解 五、性能演進——版本對比 六、開發者建議 七、總結歸納 一、前言簡介 HTTP&#xff08;“H”yper“t”ext “T”ransfer “P”rotocol&#xff0c;超文本傳輸協議&#xff09;是互聯網上應用最廣泛…

記錄RK3588的docker中啟動rviz2報錯

安裝好rk3588 的docker&#xff0c;pull了ros的完整鏡像后&#xff0c;想要啟動rviz但是報錯&#xff0c;下面是我的踩坑記錄 0.原始的啟動鏡像的腳本&#xff1a; sudo docker run -it --rm --privileged --nethost -e DISPLAY$DISPLAY --namemy_image_name \-e DISPLAY$DIS…

ThingJS 新手學習技巧

一、ThingJS 基礎認知 1.1 ThingJS 是什么 ThingJS 是一款基于 WebGL 技術的 3D 可視化開發平臺&#xff0c;它為開發者提供了簡單易用的 API 和豐富的 3D 場景組件&#xff0c;讓開發者能夠快速構建出高質量的 3D 可視化應用。無論是智慧園區、智慧樓宇、智慧交通還是工業監…