1. 程式人生 > >二維數組與方法(函數)

二維數組與方法(函數)

ans 幫我 title 打印 多個 說明 else class 兩個

二維數組

什麽是二維?

? 比如(合金彈頭、超級瑪麗)

? 二維數組裏面放一維數組。

什麽是二維數組?

? 二維數組本質上是以數組作為數組元素的數組,即“數組的數組”,

? 二維數組又稱為矩陣,行列數相等的矩陣稱為方陣

怎麽創建一個二維數組?

數據類型[][]  對象名 = new 數據類型[x][y];
x代表行
y代表列

例如:

     int [ ][ ] a = new int [2] [2];

數組 : 使用索引來操作元素, 下面給二維數組賦值

    a[0] [0] = 1; //第一行第一列

    a[0] [1] = 2;//第一行第二列

    a[1] [0] = 3;//第二行第一列

    a[1] [1] = 4;//第二行第二列

如何遍歷一個二維數組:

for(int i =0;i<a.length;a++){ // 外層循環代表行 a.length 求行數

  for(int j =0;j<a[i].lenght;j++){//內層循環代表列 a[i].length 求每一行的列數

    System.out.print(a[i][j])//打印第i行第j列的值  

    }

System.out.println();

  }

練習:二維數組求和

二維數組直接賦值:

第二種情況:
int[][] c = new int[][]{
    				{1,2},
    				{3,4}
					};

學到這裏二維數組完了嗎?沒呢,還有一種情況。

// 先聲明行,後聲明列:
String[][] y = new String[2][];
y[0] = new int[2]; // 定義第一行有二列
y[1] = new int[3];//定義第二行有三列
// 例如:多個市屬於一個省
// 廣東省
y[0][0] = "廣州市"; 
y[0][1] = "深圳市";
//陜西省
y[1][0] = "寶雞市";
y[1][1] = "西安市";

拔高練習:打印楊輝三角

技術分享圖片

int[ ][ ] a = new int[10] [ ];

for(int i =0;i<a.length;i++){

    a[i] = new int [i+1];

     for(int j=0;j<a[i].length;j++){  

      if(j ==0 || i==j){

        a[i][j] =1;

      }else{

        a[i][j] =a[i-1][j]+a[i-1][j-1];

      }

    }

  }

  for(int[] is : a){

    for(int i : is){

      System.out.print(i+"\t")

      }

      System.out.println();

    }

 

方法

什麽是方法?

? 我們經常說做事要有方式方法。實現某個目的的具體過程.

? 例如我們學過 main函數在裏面寫的排序,求水仙花數等

為什麽要用方法?

? 例如:有三個人 小明,小華,小紅三個人,

? 老師要求小明把班級語文分數成績排名

? 要求小華把班級數學分數成績排名

? 要求小華把班級英語分數成績排名

? 這個時候都要用到排序,我們此時可以把制作一個排序的方法供他們使用

? 這樣代碼就只用寫一次,多次使用,這樣就提高了代碼的復用性

方法分為兩類四種:

  訪問修飾符 是否靜態 有無返回值 方法名(有無參數){

}

  //相似與

  public static void main(String[] args){

}

一. 無返回值

// 1.無參數無返回值

  public static void demo1(){

    System.out.println("我是無參數無返回值");

}

// 1.有參數無返回值
// 何為參數? f(x)這個函數裏面的 x 就叫做參數

public static void demo2(int i){// int i 就是參數

 System.out.println(i);

}

練習: 傳遞一個一維數組,求出最大值。

1.定義方法的步驟是什麽?

? 定義方法有兩個明確:

? a.是否有返回值

? b.是否有未知參,參與運算

2.方法的執行流程是什麽?

? 自己定義的方法不被調用的時候是不會被執行的。

? 在主函數裏直接寫上方法的名字即可(要考慮是否需要參數)

調用者: 主函數,main

執行者: 某一個方法本身

實際參數: 實際參與運算的數據

形式參數: 方法小括號裏的變量

二.有返回值

// 1. 無參數有返回值  
// 什麽是返回值? 把void這個關鍵字改為 數據類型時就說明這個方法是有返回值的
// 怎麽返回? 用 return 關鍵字, 返回的值的類型與方法上面的數據類型一致

  public static int demo3(){

  return 5;// 返回值,顧名思義返回的是一個值

}

  public static int demo4(){

    int a =5;

    return a;

}

//2.有參數有返回值
public static int demo5(int i){
    
    return i;
}

註意:

? 其實每一個方法最後一行都有一個return,沒有返回值可以省略不寫,但系統會幫我們添加一個,其作用就是為了結束方法

? 如果手動的寫出 return 就不允許帶回任意的數據。

public static void test(){
    return;
}

定義及使用方法的註意事項有哪些?

? 1.方法不能定義在另外一個方法的裏面

? 2.寫錯方法名字

? 3.寫錯了參數列表

? 4.方法返回值是void,方法中可以省略return 不寫

? (return 後面與下面不能有代碼)

? 5.方法返回值類型和return 後面數據類型必須匹配

? 6.調用方法的時候,返回值void不能寫在輸出語句中

練習:

addition、subtract、 multiply、division

傳遞數組排序

方法的重載

什麽是方法的重載?

? 在同一個類中:

? 方法名相同

? 參數列表不同(參數的順序、個數、類型)

? 和返回值無關

public static void test1(){
    
}
public static void test2(int i){
    
}
public static void test3(String name){
    
}
public static void test4(char sex){
    
}
public static void test5(double weight){
    
}
public static void test6(int i,int j){
    
}
public static void test7(int i,String name){
    
}
..........

方法參數分兩種:

? 一.基本數據類型

? 基本數據類型的變量當做參數傳遞的時候

? 方法的局部變量會隨著方法的執行完畢而被釋放

? 局部變量:

? 定義在方法的聲明上和 方法體內

? 二.引用數據類型

? 引用數據類型當做參數傳遞,其實傳遞的是地址值

? 即使方法執行完畢,但是實體(對象、數組)還在對內存中

二維數組與方法(函數)