Java 學習筆記(基礎篇5)

1. 綜合練習

(1) 抽獎

public class test10 {public static void main(String[] args) {int[] arr = {2,588,888,1000,10000};Random r = new Random();for (int i = 0; i < arr.length; i++) {int randomIndex = r.nextInt(arr.length);int temp = arr[randomIndex];arr[randomIndex] = arr[i];arr[i] = temp;}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}
}

關鍵邏輯:

循環變量i從 0 遍歷到數組長度 - 1,對每個位置的元素進行隨機交換操作,步驟如下:

  • 生成隨機索引:int randomIndex = r.nextInt(arr.length),隨機索引范圍是 0 到數組長度 - 1(此例中為 0-4)。
  • 交換元素:通過中間變量temp實現arr[i]arr[randomIndex]的位置交換
  • 由于代碼僅進行元素位置的交換,沒有新增、復制或刪除元素,所以元素不會重復

(2) 雙色球中獎系統

兩大功能。具體需求如下:

號碼組成

  • 紅球:從 1-33 的整數中選擇 6 個,不可重復
  • 藍球:從 1-16 的整數中選擇 1 個,可與歷史號碼重復
  • 一注完整號碼包含 6 個紅球 + 1 個藍球,共 7 個數字

輸入驗證

  • 紅球必須在 1-33 范圍內,且 6 個紅球不能重復
  • 藍球必須在 1-16 范圍內
  • 若用戶輸入不符合規則,需提示錯誤原因并要求重新輸入
public class test11 {public static void main(String[] args) {int[] arr = createNumber();System.out.println("----------------");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}System.out.println();int[] userInputArr = userInputNumber();for (int i = 0; i < userInputArr.length; i++) {System.out.print(userInputArr[i] + " ");}int redCount = 0;int blueCount = 0;for (int i = 0; i < userInputArr.length - 1; i++) {int redNumber = userInputArr[i];for (int j = 0; j < arr.length - 1; j++) {if (redNumber == arr[j]) {redCount++;break;}}}int blueNumber = userInputArr[userInputArr.length - 1];if (blueNumber == arr[arr.length - 1]) {blueCount++;}System.out.println();System.out.println(redCount);System.out.println(blueCount);}public static int[] userInputNumber(){int[] arr = new int[7];Scanner sc = new Scanner(System.in);for (int i = 0; i < 6; ) {System.out.println("請輸入第" + (i + 1) + "個紅球號碼");int redNumber = sc.nextInt();if(redNumber >= 1 && redNumber <= 33){boolean flag = contains(arr, redNumber);if (!flag){arr[i] = redNumber;i++;} else{System.out.println("當前紅球號碼已經存在,請重新輸入");}} else{System.out.println("當前紅球號碼超出范圍");}}System.out.println("請輸入籃球號碼");while (true) {int blueNumber = sc.nextInt();if (blueNumber >= 1 && blueNumber <= 16){arr[arr.length - 1] = blueNumber;break;} else{System.out.println("當前藍球號碼超出范圍");}}return arr;}public static int[] createNumber(){int[] arr = new int[7];Random r = new Random();for (int i = 0; i < 6; ) {int redNumber = r.nextInt(33) + 1;boolean flag = contains(arr, redNumber);if (!flag) {arr[i] = redNumber;i++;}}int blueNumber = r.nextInt(16) + 1;arr[arr.length - 1] = blueNumber;return arr;}public static boolean contains(int[] arr, int number) {for (int i = 0; i < arr.length; i++) {if (arr[i] == number) {return true;}}return false;}
}

① 藍球輸入的無限循環,藍球輸入使用while (true)循環,直到輸入合法才break

② contains() 方法:

public static boolean contains(int[] arr, int num) {for (int i = 0; i < arr.length; i++) {if (arr[i] == num) {  // 這里的numreturn true;}}return false;
}
  • 括號里的numint num)是形參:它是方法定義時聲明的參數,用于接收調用方法時傳入的實際值,是形參的 “定義處”。
  • 代碼里的numarr[i] == num中的num)不是新的形參:它是對前面已經定義的形參num的 “使用”,引用的是同一個變量。

2. 二維數組

(1) 二維數組靜態初始化:

int[][] arr = {{11, 22}, {33, 44}};

(2) 二維數組遍歷

int[][] arr = {{11, 22, 33}, {44, 55, 66}};
for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j] + " ");}System.out.println();
}

(3) 二維數組動態初始化

數據類型[][] 數組名 = new 數據類型[行數][列數];

示例:

int[][] arr = new int[2][3];  // 2行3列的二維數組
arr[0] = new int[]{11, 22, 33};
arr[1] = new int[]{44, 55, 66};
  • 2:表示二維數組長度為 2,可以裝 2 個一維數組
  • 3:表示每一個一維數組的長度都是 3,可以裝 3 個 Int 類型的元素

(4) 計算總營業額

public class test12 {public static void main(String[] args) {int[][] yearArrArr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};int yearSum = 0;for (int i = 0; i < yearArrArr.length; i++) {int[] quarterArr = yearArrArr[i];int sum = getSum(quarterArr);System.out.println("第" + (i + 1) + "個季度的總營業額為" + sum);yearSum += sum;}System.out.println("全年總營業額為:" + yearSum);}public static int getSum(int[] arr){int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}return sum;}
}

這個程序中存在兩次遍歷,分別對應不同的層次:

① 第一次遍歷(在main方法中)

遍歷的是二維數組的外層,目的是逐個取出每個季度的一維數組:

// 外層循環:遍歷二維數組,每次取出一個季度的一維數組
for (int i = 0; i < yearArrArr.length; i++) {int[] quarterArr = yearArrArr[i]; // 取出當前季度的一維數組// ...
}

②?第二次遍歷(在getSum方法中)
遍歷的是單個一維數組,目的是計算這個數組中所有元素的總和

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

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

相關文章

P1162 填涂顏色(染色法)

P1162 填涂顏色 - 洛谷 #include <bits/stdc.h> using namespace std; #define ll long long const int N 1e7 10; int n; int a[100][100],b[110][110]; int dx[4]{-1,1,0,0}; int dy[4]{0,0,1,-1}; void dfs(int x,int y) {if(x<0 || x>n1 || y<0 || y>n…

Webrtc在項目中承擔的角色

一、簡單劃分 解決方案層:負責對SDK的對接、操作業務邏輯、UI封裝、采集、渲染等,屬于基礎業務邏輯層 會議SDK層:負責對會議業務邏輯的封裝、服務端交互、創會/加會/離會等,屬于會議業務邏輯層 mediasoupclient層: 負責對webrtc封裝,提供會議層面相關接口,屬于webrtc業務…

Servlet上傳文件

這是一個Maven項目tomcat版本&#xff1a;9.0.107pom.xml<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.…

cocos creator 3.8 - 精品源碼 -《漢中漢:漢字中的字》

cocos creator 3.8 - 精品源碼 - 超級文字大師游戲介紹功能介紹免費體驗下載開發環境游戲截圖免費體驗游戲介紹 《漢中漢&#xff1a;漢字中的字》、找漢字&#xff0c;是一款從文字中的筆畫找出可以組成新漢字的小游戲。比如&#xff1a;“王”字中的筆畫就可以組成&#xff…

手機端的音視頻界面或者圖片文檔界面共享給大屏

手機端的音視頻界面或者圖片文檔界面共享給大屏&#xff0c;可通過無線投屏和有線連接等技術手段實現&#xff0c;以下是具體介紹&#xff1a;無線投屏&#xff1a;AirPlay&#xff1a;這是蘋果公司開發的無線共享協議。蘋果手機可通過上滑或下拉調出控制中心&#xff0c;點擊 …

Linux內存管理系統性總結

Linux內存管理系統性總結 內存管理核心架構圖 #mermaid-svg-hKRdgBBYXZTiost8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hKRdgBBYXZTiost8 .error-icon{fill:#552222;}#mermaid-svg-hKRdgBBYXZTiost8 .error-t…

MySQL 運算符實戰:9 道經典練習題解析

MySQL 運算符實戰&#xff1a;9 道經典練習題解析 運算符是 MySQL 查詢的 “靈魂”&#xff0c;靈活運用各類運算符能讓數據篩選更加精準高效。本文通過 9 道實戰練習題&#xff0c;詳解邏輯運算符、比較運算符及模糊匹配的用法&#xff0c;幫你快速掌握運算符的核心應用場景。…

【R語言】更換電腦后,如何在新設備上快速下載原來設備的 R 包?

【R語言】更換電腦后&#xff0c;如何在新設備上快速下載原來設備的 R 包&#xff1f; 在日常使用 R 進行數據分析時&#xff0c;我們往往會安裝很多包&#xff08;packages&#xff09;&#xff0c;一旦更換電腦&#xff0c;手動一個一個重新安裝會非常麻煩。本文介紹一種簡單…

如何在 Ubuntu 24.04 或 22.04 LTS 上安裝 PowerShell

在本教程中,我們將學習如何在 Ubuntu 24.04 Noble 或 22.04 Jammy JellyFish Linux 中通過命令終端安裝 Microsoft Windows PowerShell。 Windows PowerShell 既是一個命令行外殼程序,也是一種腳本語言。它擁有超過 130 個遵循一致語法和命名約定的命令行工具,稱為 cmdlet(…

基于支持向量機的數據回歸預測(libsvm) SVM

一、作品詳細簡介 1.1附件文件夾程序代碼截圖 全部完整源代碼&#xff0c;請在個人首頁置頂文章查看&#xff1a; 學行庫小秘_CSDN博客?編輯https://blog.csdn.net/weixin_47760707?spm1000.2115.3001.5343 1.2各文件夾說明 1.2.1 main.m主函數文件 這段 MATLAB 代碼實現…

Flowith-節點式GPT-4 驅動的AI生產力工具

本文轉載自&#xff1a;Flowith-節點式GPT-4 驅動的AI生產力工具 - Hello123工具導航 ** 一、節點式 AI 工作流革新者&#xff1a;Flowith 深度解析 二、產品核心定位 Flowith 是一款基于 GPT-4 Turbo 的節點式 AI 生產力工具&#xff0c;突破傳統單線程聊天模式&#xff0c…

MySQL的事務日志:

目錄 redo&#xff08;重做日志&#xff09;&#xff1a; 特點&#xff1a; 組成&#xff1a; 整體流程&#xff1a; redo log buffer與redo log file之間的刷盤策略&#xff1a; 異步刷盤&#xff1a; 同步刷盤&#xff1a; 拆中策略&#xff1a; undo&#xff08;回…

JavaScript 中 throw error 與 throw new Error(error) 的用法及區別,分別適合什么場景使用?

JavaScript 中 throw error 與 throw new Error(error) 的用法及區別 在 JavaScript 中&#xff0c;throw 關鍵字用于拋出異常。當代碼遇到某些錯誤或異常情況時&#xff0c;可以通過拋出錯誤來通知程序&#xff0c;方便后續的錯誤處理。盡管 throw 的使用看似簡單&#xff0c…

鴻蒙自帶組件效果大全

圖形變換-視效與模糊-通用屬性-ArkTS組件-ArkUI&#xff08;方舟UI框架&#xff09;-應用框架 - 華為HarmonyOS開發者 注意:找到需求效果之后先對一下版本 視距 圖像效果 圖片裁剪 顏色漸變 前景屬性設置 外描邊設置: 視效設置: 組件內容模糊 運動模糊 點擊回彈效果…

ISP算法如何優化提升成像質量

ISP算法通過多維度技術協同優化成像質量&#xff0c;核心優化路徑如下&#xff1a;一、降噪與細節增強?AI驅動降噪?深度學習模型實時識別噪點模式&#xff0c;暗光場景信噪比提升5倍以上&#xff0c;同時保留紋理細節。時空域聯合降噪技術抑制運動模糊&#xff0c;鬼影消除率…

單例模式及優化

單例模式是一種創建型設計模式&#xff0c;其核心是確保一個類在程序中只能存在唯一實例&#xff0c;并提供一個全局訪問點。這種模式適用于需要集中管理資源&#xff08;如日志、配置、連接池&#xff09;的場景&#xff0c;避免資源沖突和重復創建的開銷。 一、介紹 類型 單例…

Dockerfile優化指南:利用多階段構建將Docker鏡像體積減小90%

更多如果你已經跟隨我們之前的教程&#xff0c;親手將自己的應用裝進了Docker這個“魔法盒子”&#xff0c;那你可能很快就會遇到一個幸福但又尷尬的煩惱&#xff1a;你親手構建的Docker鏡像&#xff0c;竟然像一個塞滿了石頭和棉被的行李箱&#xff0c;臃腫不堪&#xff0c;笨…

英文PDF翻譯成中文怎么做?試試PDF翻譯工具

在全球化快速發展的時代&#xff0c;跨語言交流變得愈發頻繁&#xff0c;無論是學術研究、商務合作還是日常學習&#xff0c;都離不開一個高效、準確的翻譯工具。尤其是對于PDF文件的翻譯需求&#xff0c;更是日益增長。今天&#xff0c;就讓我們一起深入了解幾款在PDF翻譯領域…

macOS使用brew切換Python版本【超詳細圖解】

目錄 一、更新Homebrew倉庫 二、安裝pyenv 三、將pyenv添加到bash_profile文件中 四、使.bash_profile文件的更改生效 五、安裝需要的Python版本 六、設置全局使用的Python版本 七、檢查Python版本是否切換成功 pyenv常用命令 一、更新Homebrew倉庫 brew update 這個…

[矩陣置零]

初始思路分析 這段代碼實現了將矩陣中元素為0的行和列全部置零的功能。主要思路是使用標記數組記錄需要置零的行和列。以下是詳細分析&#xff1a; 1. 初始化階段 int m matrix.size(); int n matrix[0].size(); vector<bool> row(m), col(n);獲取矩陣的行數m和列數n創…