1. 程式人生 > >Java第一階段(4)陣列 11.9

Java第一階段(4)陣列 11.9

陣列的概念

就是一個容器,裝很多資料

  1. 陣列的容量(長度)是固定的,無法增加也無法減少
  2. 陣列中的所有資料的資料型別必須一致
  3. 在java中被當做物件來使用
  4. 一維陣列[] 二維陣列[][]  多維…

建立陣列

注意:在建立的時候就要規定這個陣列存的是什麼型別

1. 靜態初始化:先給定資料與長度

  • int型別的一維陣列型別: (完整版) int[] array = new int[]{1,2,3,4,5};  (簡約版) int[] array = {1,2,3,4,5};

System.out.print(array)   //此時如果輸出 array,輸出的值為 [[email protected]

[[email protected]:陣列在記憶體中的地址值: [I : 一維陣列的int  @:分割   1db9742:16進位制

  • 陣列中的元素:
  1. 長度:陣列名.length
  2. 訪問陣列中的某一個元素:array[ 位置/索引/角標 ] ( 起始都是從0開始 )   陣列第一個元素   array[ 0 ]   陣列最後一個元素  array[ array.length - 1 ]
  3. 使用迴圈來獲取陣列中的每一個元素(陣列的遍歷)
for(int a = 0; a < array.length ; a++){
	System.out.println(array[a]);
}

2. 動態初始化:先只給定長度,後續自行增加資料

  • int[] arr = new int[3]  //3代表 建立了一個長度為3的一維陣列
陣列型別 預設空值
int[] 0
char[] 空格
boolean[] false
String[] null
  • 引用資料型別的陣列,動態初始化預設為null---空指標

java中,記憶體區域的劃分

  1. 暫存器:記憶體運算儲存效率最高(CPU)
  2. 本地方法區:給本地系統使用
  3. 方法區:載入類的檔案、載入靜態的引數,常量
  4. 棧:區域性變數,物件的引用(建立物件時,等號左邊的就是引用)
  5. 堆:物件的例項(建立物件時,等號右邊的東西/new 出來的東西)
  • 區域性變數:寫在方法中的變數
  • 全域性變數:寫在方法外,類中的變數

練習

  1. 建立一個int型別的一維陣列,將裡面的每一個元素 複製 給另一個數組,並且遍歷出來。
package test;
import java.util.Scanner;
public class Array_1 {
	public static void main(String[] args) {
		
		int[] array_1 = {1,2,3,4,5};
		int[] array_2 = new int[5];
		System.out.println("array_2陣列為:");
		System.out.print("{");
		for(int i = 0;i<array_1.length;i++){
			array_2[i]=array_1[i];
			System.out.print(array_2[i]+" ");
		}
		System.out.println("}");
		System.out.println();
	}
}
  1. 建立一個int型別的一維陣列,根據鍵盤輸入一個數,將這個數加到這個陣列的末尾,並遍歷出這個新的陣列。
package test;
import java.util.Scanner;
public class Array_2 {
	public static void main(String[] args) {
		
		int[] arr_3 = new int[3];
		System.out.println("arr_3陣列為:");
		System.out.print("{");
		for (int i = 0; i < arr_3.length; i++) {
			arr_3[i] = i+1;
			System.out.print(arr_3[i]+" ");	
		}
		System.out.print("}");
		System.out.println();
		int[] newArr = new int[4];
		Scanner s = new Scanner(System.in);
		System.out.println("請輸入一個數字,加到末尾");
		int shu = s.nextInt();
		for (int i = 0; i < newArr.length-1; i++) {
			newArr[i]= arr_3[i];
		}
		newArr[3] = shu;
		System.out.print("{");
		for (int i = 0; i < newArr.length; i++) {
			
			System.out.print(newArr[i]+" ");
		}
		System.out.print("}");
	}
}

  1. 將星期一到星期日放進陣列中,根據鍵盤輸入一個數字,來對應列印星期數。
package test;
import java.util.Scanner;
public class Array_3 {
	public static void main(String[] args) {
		String[] date = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
		Scanner s = new Scanner(System.in);
		System.out.println("請輸入1-7之間的數字");
		int write = s.nextInt();
		String res = date[write-1];
		System.out.println("您輸入的是:"+res);
	}
}
  1. 隨機10個(1-100之間)的整數,放進陣列中,將角標為奇數的元素的值翻倍,然後遍歷出來
package test;
import java.util.Random;
public class Array_4 {
	public static void main(String[] args) {
		
		int[] math = new int[10];
		
		for (int i = 0; i < math.length; i++) {
			Random r = new Random();
			int sui = r.nextInt(100+1);
			math[i] = sui;
			System.out.print(math[i]+" ");
		}
		System.out.println();
		for (int i = 0; i < math.length; i++) {
			if((i+1)%2!=0){
				math[i]=math[i]*2;
			}
			System.out.print(math[i]+" ");
		}
	}
}
  1. 一維打地鼠
    1. 初始化char型別的一維陣列 O O O O O 五個洞
    2. 遊戲迴圈10次
    3. 隨機角標地鼠隨機出現 O O O X O
    4. 提示玩家擊打
    5. 判斷是否打中
    6. 擊中得2分,未擊中扣1分(亂輸入也視為沒打中)
    7. 遊戲結束,統計擊中次數,未擊中次數 和最後的得分
package test;
import java.util.Random;
import java.util.Scanner;
public class Game_DiShu {
	public static void main(String[] args) {
		// 得分
		int gold = 0;
		// 總得分
		int sum = 0;
		// 擊中
		int win = 0;
		// 未擊中
		int lose = 0;
		// 遊戲迴圈10次
		System.out.println("歡迎來到打地鼠遊戲");
		System.out.println("--------------");
		System.out.println("遊戲正在初始化");
		
		for (int game = 0; game <= 10; game++) {
			// 初始化char型別的一維陣列 O O O O O 五個洞
			char[] drop = new char[5];
			for (int i = 0; i < drop.length; i++) {
				drop[i] = '0';
				// System.out.print(drop[i] + " ");
			}
			Random r = new Random();
			int sui = r.nextInt(5)+1;

			for (int i = 0; i < drop.length; i++) {
				if ((sui - 1) == i) {
					drop[i] = 'x';
					break;
				}
			}
			for (int i = 0; i < drop.length; i++) {
				System.out.print(drop[i] + " ");
			}
			System.out.println();
			System.out.println("地鼠出現,請打擊正確的位置");
			Scanner s = new Scanner(System.in);
			int player = s.nextInt();
			if (player == sui) {
				System.out.println("恭喜你,擊中了,得兩分");
				sum += 2;
				win++;
			} else {
				System.out.println("很抱歉,未擊中,扣1分");
				sum--;
				lose++;
			}
		}
		System.out.println("遊戲結束");
		System.out.println("您總共擊中" + win + "次");
		System.out.println("未擊中" + lose + "次");
		System.out.println("總得分" + sum);
	}

}