2012年7月9日 星期一

java 動態配置矩陣

參考自(http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/OneDimensionArray.htm)
由於陣列的記憶體空間是使用new配置而來,這意味著您也可以使用動態的方式來宣告陣列長度,而不用在程式中事先決定陣列大小,例如:

  • CustomArrayLength.java
import java.util.Scanner;
 
public class CustomArrayLength {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
 
        System.out.print("請輸入Array大小: "); 
 
        int length = scanner.nextInt();
        int[] arr = new int[length];  // 動態配置長度 
 
        System.out.println("Array長度: " + arr.length); 
        System.out.print("內容: "); 
        for(int i = 0; i < arr.length; i++) 
            System.out.print(arr[i] + " "); 
        System.out.println();
    }
} 

執行結果:
請輸入Array大小: 20
Array長度: 20
內容: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


在上面的程式中,您先宣告一個陣列名稱arr,使用int[] arr表示這個名稱將參考至一個一維陣列物件,您也可以使用int[] arr,這兩種宣告方式都是可以接受的,在使用者輸入指定長度後,您使用這個長度來配置陣列物件,並將這個陣列物件指定給arr來參考。

陣列的索引值由0開始並不是沒有原因的,事實上索引值表示所指定的陣列元素相對於陣列第一個元素記憶體位置的位移量(Offset),位移量為0,自然就是指第一個元素,而索引9就是指相對於第一個元素的位移量為9。在Java中您不直接處理關於記憶體位址的操作,以上的觀念是讓您更瞭解一些陣列索引的運作原理。



import java.util.Scanner;
//動態配置陣列
public class DynamicArray {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.println("請輸入要輸入的個數:");
  Scanner iArraySize = new Scanner(System.in);
  //知道陣列大小後才宣告並同時配置記憶體(new)
  String name[] = new String[iArraySize.nextInt()];
  //輸入NAME陣列
  for (int i=1; i<=name.length;i++)
  {
   Scanner strName = new Scanner(System.in);
   name[i-1] = strName.nextLine();
  }
  //列印出剛剛輸入的姓名陣列
  for(String j:name){
   System.out.println(j);
  }
    

 }
}

沒有留言:

張貼留言