從零開始學JAVA——陣列(二)
阿新 • • 發佈:2020-12-14
陣列二
求二維陣列的和
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();
}
}
}