IT兄弟連 Java語法教程 陣列 經典案例
案例需求:
程式設計實現雙色球中獎號碼的生成
1)應用知識:
● 陣列的宣告
● 陣列的使用
● for迴圈
2)需求解析:
在該程式中,需要定義一個長度為7的陣列,用來儲存中獎號碼,使用Random物件獲取1~33以內的隨機數最為中獎號碼,使用for迴圈迴圈6次產生6個普通的中獎號碼存入陣列中,最後使用Random物件隨機生成一個1~16以內的中獎號碼,需要注意,已經產生的中獎號碼不能再次作為中獎號碼,所以需要使用if分支結構控制。
3)需求實現:
import java.util.Random
public class ColorBall{
public static void main(String[] args){
//宣告一個數組用來存放中獎號碼
int[] arr = new int[7];
//宣告隨機數物件
Random rand = new Random();
//使用for迴圈生成中獎號碼
for(int i = 0; i<6; i++){
//獲取一個隨機數,表示中獎號碼
arr[i] = random.nextInt(33)+1;
for(int j = i-1; j>=0; j--){
//如果生成的隨機數已經存在,則重新生成一個隨機數
if(arr[i] == arr[j]){
i--;
break;
}
}
}
//生成最後的特殊中獎號碼
arr[6] = rand.nextInt(16)+1;
//遍歷並輸出所有中獎號碼
for(int num : arr){
System.out.println(arr[i] + " ");
}
System.out.println();
}
}
案例需求:
程式設計實現任意正整數中重複數字出現的次數的統計
1)應用知識:
● 陣列的宣告
● 陣列的使用
● while迴圈
● for迴圈
● 算術運算子
2)需求解析:
程式開始執行,提示使用者輸入一個正整數並使用Scanner物件接收,準備一個長度為10的陣列,陣列的下標對應了正整數中可能出現的數字,0~9。然後通過算符運算子將該正整數的每個位中的數值提取出來,如果使用者輸入的正整數中存在1時,則將陣列中下標為1的位置上的數值加1,以此類推。最後遍歷輸出該陣列中的元素,就可以實現任意正整數中重複陣列出現次數的統計。
3)需求實現:
import java.util.Scanner;
public class NumCount{
public static void main(String[] args){
//提示使用者輸入一個正整數並使用變數記錄
System.out.println("請輸入一個正整數");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
//準備一個長度為10的型別為int的一維陣列
int[] arr = new int[10];
//拆分正整數中的每個數字並統計到一維陣列中
while(num > 0){
arr[num%10]++;
num /= 10;
}
//列印最終的統計結果
for(int i = 0; i<arr.length; i++){
if(arr[i] > 0){
System.out.println(i + "出現了" + arr[i] + "次!");
}
}
}
}
案例需求:
程式設計實現使用氣泡排序堆陣列中的元素從小到大排序
1)應用知識:
● for迴圈
● 陣列的宣告
● 氣泡排序
2)需求解析:
氣泡排序的思想是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至全部排序完成。
第一趟比較完成後,最後一個數一定是陣列中最大的一個數,所以第二趟比較的時候最後一個數不參與比較;
第二趟比較完成後,倒數第二個數也一定是陣列中第二大的數,所以第三趟比較的時候最後兩個數不參與比較;
依次類推,每一趟比較次數-1;
3)需求實現:
public class BubbleSort{
public static void main(String[] args){
int[] arr = {6,5,7,4,8,3,9,2,0,1};
for(int i = 0; i<arr.length; i++){
for(int j = 0; j<arr.length-i-1;j++){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int num : arr){
System.out.println(num + ",");
}
}
}
案例需求:
程式設計實現陣列元素反轉
1)應用知識:
● 陣列的宣告
● 陣列的使用
● for迴圈
2)需求解析:
實現陣列元素的反轉,就是將陣列中的元素前後位置調換,第一個元素和最後一個元素調換位置,第二個元素和倒數第二個元素調換位置,依次類推,如果陣列的長度是奇數,那麼中間位置的陣列元素就不需要調換位置。使用for迴圈迴圈陣列長度的一半即可完成。
3)需求實現:
public class ArrReverse{
public static void main(String[] args){
int[] arr = {1,2,3,4};
for(int i = 0;i<arr.length/2;i++){
int temp = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = temp;
}
for(int num : arr){
System.out.println(num + ",");
}
}
}
案例需求:
程式設計實現將兩個數組合併為一個數組
1)應用技術:
● 陣列的宣告
● 陣列的使用
● for迴圈
● if分支結構
2)需求分析:
將兩個數組合併成一個數組,那麼這個新的陣列的長度一定等於這兩個陣列長度之和,定義出這個新的陣列,然後使用for迴圈依次將兩個陣列中的元素放入新陣列即可。
3)需求實現:
public class ArrCombine{
public static void main(String[] args){
int[] arr1 = {1,2,3,4};
int[] arr2 = {5,6,7,8};
int[] arr3 = new int[arr1.length+arr2.length];
for(int i = 0;i<arr3.length;i++){
if(i<arr1.length){
arr3[i] = arr1[i];
}
if(i>=arr2.length){
arr3[i] = arr2[i-arr1.length];
}
}
for(int num : arr3){
System.out.println(num + ",");
}
&nb