2013-05-30 76 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