題目:分別建立xyz三個3*3的int陣列,然後將x,y的陣列加總存放到z陣列裡,最後將結果顯示在螢幕上
- x,y陣列中的數字規定:必須是亂數產生0~30的數字
- 使用多型
這個作業真的讓我一個頭兩個大。
不過學到很多
- 陣列型態宣告的時候變數裡裝的是陣列記憶體空間的址的值,為其他型態初值為null
- 二維陣列的宣告回傳型態為 int [][],double[][]......
- 宣告的變數不能使用多型,必須要用方法才能借過,因為變數宣告是預設是public static final
- 不在方法內,變數只能夠宣告不能夠做運算
- interface裡的引數也要寫的一模一樣
- 取名的時候不要使用到系統規定不能使用的字
這些看起來很容易但都是我的痛
思考進程:
- 創建ArrayInterface定規格,創建arrayX,arrayY,arrayZ implements ArrayInterface,創建ArrayTest裡面有main方法一邊作一邊check
- 寫出產生亂數矩陣方法
- 寫出能夠印出矩陣方法
- 寫出矩陣相加方法
- 寫出矩陣內取值方法
- 在ArrayTest內創出陣列物件,透過多型使用方法產生出arrayX,arrayY,相加成arrayZ,並用sum方法算出arrayZ陣列總和
ArrayInterface
interface ArrayInterface {//宣告介面
public int[][] CreateRandomArray(int rowSize,int columSize);//定規格,用來產生亂數矩陣,回傳3*3矩陣
public int sum(int[][] arrayZ);//定規格把矩陣Z丟入作相加回傳int sum
public void display(int[][] arrayb);//定規格,將矩陣細節印出確認對錯
public int[][] combine(int[][] arrayX,int[][] arrayY); //定規格,矩陣X和矩陣Y相加放入矩陣Z
}
ArrayX ,ArrayY和ArrayZ只有名稱不一樣就不貼了
public class ArrayX implements ArrayInterface{//implements ArrayInterface
public int[][] CreateRandomArray(int rowSize,int columSize){//產生亂數row*colum矩陣
int [][] randomArray= new int[rowSize][columSize];//產生一個陣列空間size依照引數
for(int i=0;i<rowSize;i++){//依序將亂數填入矩陣
for(int j=0;j<columSize;j++){
int r = (int)(30*java.lang.Math.random());//亂數產生,因為是double型態要強制轉換至int
randomArray[i][j]=r;
}
}return randomArray;//回傳矩陣
}
public int sum(int[][] arrayZ){//將矩陣丟入回傳總和
int sum=0;
for(int i=0;i<arrayZ.length;i++){//依序將array的值丟入sum
for(int j=0;j<arrayZ[i].length;j++){
sum += arrayZ[i][j];
}
} return sum;
}
public void display(int[][] arrayb){ //印出矩陣每一個元素
for(int k=0;k<arrayb.length;k++){
for(int l=0;l<arrayb[k].length;l++){
int t=arrayb[k][l];
System.out.print(t+" ");
}System.out.println();
}
}
public int[][] combine(int[][] arrayX,int[][] arrayY){//相加兩個矩陣
int sum=0;
int[][] arrayZ=new int[3][3];
for(int i=0;i<arrayZ.length;i++){
for(int j=0;j<arrayZ[i].length;j++){
arrayZ[i][j]=arrayX[i][j]+arrayY[i][j];
sum += arrayZ[i][j];
}
}return arrayZ;//回傳矩陣
}
}
ArrayTest
public class ArrayTest{
public static void main(String args[]) {
int arrayX[][]= new int[3][3];
int arrayY[][]= new int[3][3];
int arrayZ[][]= new int[3][3];
System.out.println("我是陣列X");
ArrayInterface x = new ArrayX();
arrayX= x.CreateRandomArray(3,3);
x.display(arrayX);
System.out.println("----------------");
System.out.println("我是陣列Y");
ArrayInterface y = new ArrayY();
arrayY= y.CreateRandomArray(3,3);
y.display(arrayY);
System.out.println("----------------");
System.out.println("我是陣列Z");
ArrayInterface z = new ArrayZ();
arrayZ= z.combine(arrayX,arrayY);
z.display(arrayZ);
System.out.println("----------------");
int sum=z.sum(arrayZ);
System.out.println("我是總和"+sum);
}
}