2013-05-30 93 views
1

我想創建一個String [] []數組,並填充它的每個元素String =「0」。我不明白爲什麼這樣做後,當我嘗試顯示數組,它給我null值。這是代碼。初始化數組String [] [] java

import java.util.Vector; 

    public class hetmani{ 

private int n; 
private String[][] tab; 
private Vector wiersz; 
private Vector kolumna; 


public hetmani(int liczba){ 

    n=liczba; 
    wiersz = new Vector(); 
    kolumna = new Vector(); 
    tab = new String[n][n]; 

} 

public void wyzeruj(){ 

    for (String[] w : tab){ 
     for (String k : w){ 
      k = " 0"; 
      System.out.print(k); 
      } 
     System.out.println(); 
    } 

} 
public void wyswietl(){ 

    for (String[] i : tab){ 
     for (String j : i){ 
      System.out.print(j);} 
       System.out.println();} 
} 


public static void main(String[] args){ 

    hetmani szach = new hetmani(3); 

    szach.wyzeruj(); 
    szach.wyswietl(); 



      } 
    } 
+0

格式的代碼,因爲這會增加你得到一個回答你的問題的機會。 –

回答

7
for (String k : w){ 
      k = " 0"; 

你實際上並沒有設置數組值「0」,你只是重新分配局部變量k

您需要使用索引設置數組:

for (int i = 0; i < tab.length; i++) 
{ 
    for (int j = 0; j < tab[i].length; j++) 
    { 
     tab[i][j] = " 0"; 
     System.out.print(tab[i][j]); 
    } 
    System.out.println(); 
} 
+0

thx回答,當然應該在 – grafter

0

更新:

這裏k是參照其他物體

for (String k : w){ 
     k = " 0"; 
     System.out.print(k); 
} 

更換到:

for(int i=0;i<w.length;i++){ 
      w[i] = "0"; 
     } 

還看到: Does Java pass by reference or pass by value?

+0

之前意識到這個字符串是不可變的,實際上與問題/問題無關。 – Supericy

+0

哦,是的,抱歉!這個問題與一成不變 – liuzhijun