2016年12月21日 星期三

12/21 JAVA程式小考 多載


恩...此篇只是要讓自己別再犯白癡的錯誤
簡單的題目.....
1.3個陣列存值 分別為X Y Z三陣列 各存固定的值
2.創立的函式名稱(add)相同 但參數不同
分別為
X陣列自己加自己
X陣列+Y陣列
X陣列+Y陣列+Z陣列
3.將執行結果寫在output函數裡面


先來說一下多載的定義

相同函式的名稱() 但參數的不同型態不同或者是參數數量不同都可以形成多載

以下狀況都成立
型態不同
public static void add(int x){}
public static void add(int[][] x){}

數量不同
public static void add(int x){}
public static void add(int x,int y){}


陣列宣告丟值這邊不贅述了....(這也是我今早考試耍笨的地方 忘記這邊的語法...)
int[][] X={{1,2,3},{4,5,6},{7,8,9}}; 
  int[][] Y={{10,11,12},{13,14,15},{16,17,18}};
  int[][] Z={{19,20,21},{22,23,24},{25,26,27}};
接下來宣告方法 X陣列自己加自己(也可以直接*2)....只舉一個函式就夠了...其他一樣


int i=0,j=0;
public static void add(int[][] X)
 {
  
  int i=0,j=0;
  for(i=0;i<=2;i++)
  {

   for(j=0;j<=2;j++)
   {

    sumbox[i][j]=X[i][j]+X[i][j];
   }

  }
  output(sumbox);
 }

我知道很多人在這邊卡住了...如何輸出?也就是output....
其實很簡單 我只要在走訪陣列時...把值相加後
丟到額外的陣列裡面去做輸出動作就可以了
所以 我為了方便 我在最外層也就是public class那一層 宣告了全域變數
也就是說我不管在哪個函式裡面我都可以用這個陣列 他是共通的!


static int[][] sumbox=new int [3][3]; <==全域陣列



所以上面sumbox在走完陣列 並儲存相加後的值之後
呼叫output(sumbox)另外一個函式 把sumbox陣列裡面的值丟到output這個函式裡面做輸出
所以output為....


public static void output(int[][] M)
 {

  int i=0,j=0;
  for(i=0;i<=2;i++)
  {

   for(j=0;j<=2;j++)
   {

    System.out.print(M[i][j]+"  ");
    M[i][j]=0;

   }
   System.out.println("");

  }

 }

正常輸出 以上.....
另外 每個函式內的參數名稱 都為區域變數 你愛取甚麼變數名稱其實隨意 重複也行
因為它是把你的值抓進來存成只在這個函式裏面的變數做運算而已
如:public static void output(int[][] 隨你取名子)



public class Javatest
{

 static int[][] sumbox=new int[3][3];
 public static void main(String args[])
 {
  int[][] X={{1,2,3},{4,5,6},{7,8,9}}; 
  int[][] Y={{10,11,12},{13,14,15},{16,17,18}};
  int[][] Z={{19,20,21},{22,23,24},{25,26,27}};
  add(X);
  System.out.println("");
  add(X,Y);
  System.out.println("");
  add(X,Y,Z);


 }
 public static void add(int[][] X)
 {
  
  int i=0,j=0;
  for(i=0;i<=2;i++)
  {

   for(j=0;j<=2;j++)
   {

    sumbox[i][j]=X[i][j]+X[i][j];
   }

  }
  output(sumbox);
 }
 public static void add(int[][] X,int[][] Y)
 {
  
  int i=0,j=0;
  for(i=0;i<=2;i++)
  {

   for(j=0;j<=2;j++)
   {

    sumbox[i][j]=X[i][j]+Y[i][j];
   }

  }
  output(sumbox);
 }
 public static void add(int[][] X,int[][] Y,int[][] Z)
 {
  
  int i=0,j=0;
  for(i=0;i<=2;i++)
  {

   for(j=0;j<=2;j++)
   {

    sumbox[i][j]=X[i][j]+Y[i][j]+Z[i][j];
   }

  }
  output(sumbox);
 }
 public static void output(int[][] M)
 {

  int i=0,j=0;
  for(i=0;i<=2;i++)
  {

   for(j=0;j<=2;j++)
   {

    System.out.print(M[i][j]+"  ");
    M[i][j]=0;

   }
   System.out.println("");

  }



 }

}

沒有留言:

張貼留言