2014-03-27 30 views
0

我正在爲這個測試目的寫這個類。Java中的多維數組 - 爲什麼會發生錯誤?

public class Crap { 
    public static void main(String[] args) { 
     int[][] k = new int[2][]; 
     k[0] = {1}; 
     k[1] = {2,3}; 
     System.out.println(k[0][0]); 
     System.out.println(k[0][1]); 
     System.out.println(k[1][0]); 
     System.out.println(k[1][1]); 
    } 
} 

編譯時出現以下錯誤。

Crap.java:5: error: illegal start of expression 
     k[0] = {1}; 
      ^
Crap.java:5: error: not a statement 
     k[0] = {1}; 
       ^
Crap.java:5: error: ';' expected 
     k[0] = {1}; 
       ^
Crap.java:6: error: ']' expected 
     k[1] = {2,3}; 
     ^
Crap.java:6: error: ';' expected 
     k[1] = {2,3}; 
     ^
Crap.java:6: error: illegal start of type 
     k[1] = {2,3}; 
      ^
Crap.java:6: error: <identifier> expected 
     k[1] = {2,3}; 
      ^
Crap.java:6: error: ';' expected 
     k[1] = {2,3}; 
       ^
Crap.java:6: error: illegal start of type 
     k[1] = {2,3}; 
       ^
Crap.java:6: error: <identifier> expected 
     k[1] = {2,3}; 
       ^
Crap.java:6: error: ';' expected 
     k[1] = {2,3}; 
       ^
Crap.java:7: error: <identifier> expected 
     System.out.println(k[0][0]); 
         ^
Crap.java:7: error: ']' expected 
     System.out.println(k[0][0]); 
          ^
Crap.java:7: error: ')' expected 
     System.out.println(k[0][0]); 
          ^
Crap.java:7: error: ']' expected 
     System.out.println(k[0][0]); 
           ^
Crap.java:7: error: illegal start of type 
     System.out.println(k[0][0]); 
           ^
Crap.java:7: error: <identifier> expected 
     System.out.println(k[0][0]); 
           ^
Crap.java:8: error: <identifier> expected 
     System.out.println(k[0][1]); 
         ^
Crap.java:8: error: ']' expected 
     System.out.println(k[0][1]); 
          ^
Crap.java:8: error: ')' expected 
     System.out.println(k[0][1]); 
          ^
Crap.java:8: error: ']' expected 
     System.out.println(k[0][1]); 
           ^
Crap.java:8: error: illegal start of type 
     System.out.println(k[0][1]); 
           ^
Crap.java:8: error: <identifier> expected 
     System.out.println(k[0][1]); 
           ^
Crap.java:9: error: <identifier> expected 
     System.out.println(k[1][0]); 
         ^
Crap.java:9: error: ']' expected 
     System.out.println(k[1][0]); 
          ^
Crap.java:9: error: ')' expected 
     System.out.println(k[1][0]); 
          ^
Crap.java:9: error: ']' expected 
     System.out.println(k[1][0]); 
           ^
Crap.java:9: error: illegal start of type 
     System.out.println(k[1][0]); 
           ^
Crap.java:9: error: <identifier> expected 
     System.out.println(k[1][0]); 
           ^
Crap.java:10: error: <identifier> expected 
     System.out.println(k[1][1]); 
         ^
Crap.java:10: error: ']' expected 
     System.out.println(k[1][1]); 
          ^
Crap.java:10: error: ')' expected 
     System.out.println(k[1][1]); 
          ^
Crap.java:10: error: ']' expected 
     System.out.println(k[1][1]); 
           ^
Crap.java:10: error: illegal start of type 
     System.out.println(k[1][1]); 
           ^
Crap.java:10: error: <identifier> expected 
     System.out.println(k[1][1]); 
           ^
Crap.java:12: error: class, interface, or enum expected 
} 
^ 
+1

嘗試:'k [0] = new int [] {1}; k [1] = new int [] {2,3};' –

+0

@YohanesKhosiawan許先漢你應該把它作爲答案。並解釋它 – Baby

+0

我看,OP,如果你不介意,請接受我的答案在下面.. –

回答

2

你需要初始化第二維數組..和其語法如下:

k[0] = new int[]{1}; 
k[1] = new int[]{2,3}; 
0

你不能以這種方式使用,即熱Java的語法定義。

k[0] = {1}; 

你只能這樣做,而你正在初始化數組,像這樣的,例如:

int[][] k = {{1},{2,3}}; 

爲例子,你看here

0

數組在Java中的對象,只是沒有具有標準對象語法的對象。

因此,您必須分配它們,並且爲此需要使用新的操作符。

int[] array = new int[] { 1, 4, 6, 3}; 

或用於在二維陣列分配一個數組的元素(如你正在做的)

array[3] = new int[] { 2, 4, 6, 8 }; 

還要記住的是,由於它們是對象,並且由於使用的是粗糙的陣列(0,1)或(0)(1)的去引用的調用將失敗,因爲位置(0)處的數組只有0索引中的項目。