1. 程式人生 > 其它 >從零開始學JAVA——陣列(二)

從零開始學JAVA——陣列(二)

技術標籤:javajava

陣列二

求二維陣列的和

public class ArrayExer1 {
	public static void main(String[] args) {
		int [][] arr = new int[][] {{3,5,8},{12,9},{7,0,6,4}};
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j <
arr[i].length; j++) { sum += arr[i][j]; } } System.out.println("總和:"+sum); } }

拓展:修改題目,實現array2對array1的陣列的複製

  • 思考array1和array2是什麼關係,array1和array2地址值相同,都指向堆空間的唯一的一個數組實體
public class ArrayExer2 {
	public static void main(String[] args) {
		int[] array1,array2;
		array1 = new int[
] {1,3,5,7,14,23,47,59}; for (int i = 0; i < array1.length; i++) { System.out.print(array1[i]+"\t"); } System.out.println(); //賦值array2變數等於array1 //不能稱作陣列複製 array2 = array1; //修改array2中的偶索引元素,使其等於索引值(如array[0]=0,array[2]=2) for (int i = 0; i < array2.length; i++) { if(
i%2==0) { array2[i]=i; } } for (int i = 0; i < array1.length; i++) { System.out.print(array1[i]+"\t"); } System.out.println(); } }

課後練習一(列印回形矩陣)

import java.util.Scanner;
public class huixingshu {

    static int n;     
    static int sum;    //矩陣數字總個數
    static int flag = 1;
    static int[][] pattern;

    /*
     * 列印圖案功能,其中n為圖案矩陣的行列數
     */
    static void printPattern(int layer) {

        // 上:賦值
        for (int i = layer; i < n - layer - 1; i++) {
            pattern[layer][i] = flag++;
            if (flag > sum)
                return;
        }
        // 右:賦值
        for (int i = layer; i < n - layer - 1; i++) {
            pattern[i][n - layer - 1] = flag++;
            if (flag > sum)
                return;
        }
        // 下:賦值
        for (int i = n - layer - 1; i > layer; i--) {
            pattern[n - layer - 1][i] = flag++;
            if (flag > sum)
                return;
        }
        // 左:賦值
        for (int i = n - layer - 1; i > layer; i--) {
            pattern[i][layer] = flag++;
            if (flag > sum)
                return;
        }

        printPattern(++layer);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("請輸入矩陣的行列數:");
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        pattern = new int[n][n];

        //預處理奇偶數的不同
        if(n%2==0)
            sum=n*n;
        else{
            sum=n*n-1;
            pattern[(n-1)/2][(n-1)/2]=n*n;
        }

        printPattern(0); //遞迴

        // 輸出圖案
        for (int[] row : pattern) {
            for (int column : row) {
                System.out.print(column + "\t");
            }
            System.out.println();
        }
    }
}

4X4矩陣效果圖:
在這裡插入圖片描述

課後練習二(楊輝三角)

public class YangHuiTest {
	public static void main(String[] args) {
		//1.宣告並初始化二維陣列
		int[][]yangHui = new int[10][];
		//2.給陣列的元素賦值
		for (int i = 0; i < yangHui.length; i++) {
			yangHui[i] = new int[i+1];
			//2.1給首末元素賦值
			yangHui[i][0] = yangHui[i][i]=1;
			//2.2給每一行非首末元素賦值
			//if(i>1) {
			for(int j = 1;j<yangHui[i].length-1;j++) {
				yangHui[i][j]=yangHui[i-1][j-1]+yangHui[i-1][j];
			}
			//}
		}
		
		//3.遍歷二維陣列
		for(int i = 0; i < yangHui.length;i++) {
			for(int j = 0;j<yangHui[i].length;j++) {
				System.out.print(yangHui[i][j]+" ");
			}
			System.out.println();
		}
		
		
	}
}