2015-09-05 75 views
1

我試圖用名爲ted的示例項填充子網項的數組。我打開調試器,看到陣列中的項目保持爲空,即使在存在for循環之後。我可以看到currentItem被設置爲等於ted,但不會進入實際數組。我嘗試初始化每個循環中的currentItem,看看是否有幫助,但沒有。是否有可能在foreach循環中填充數組

int startHost = 0; 
    int endHost = 0; 
    int broadcast = 0; 
    int subnetNumber = 0; 
    String fullSubnetAddress = "Start address"; 
    String fullBroadcastAddress = "Broadcast Address"; 
    String fullStartHost = "startHost"; 
    String fullEndHost = "endHost"; 

    SubnetItem ted = new SubnetItem(subnetNumber, fullBroadcastAddress, fullStartHost, fullEndHost, fullBroadcastAddress); 


    SubnetItem[] subnetArray = new SubnetItem[this.totalSubnets]; 

    for (SubnetItem currentSubnet : subnetArray) 
    { 
     currentSubnet = new SubnetItem(); 
     currentSubnet = ted; 

    } 

    System.out.println("Pause"); 
+0

http://stackoverflow.com/questions/11032235/java-modifying-elements-in-a- foreach –

回答

4

你不能使用foreach風格的循環來填充這樣的數組。您需要使用帶索引的舊樣式循環:

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

注意:這將在數組中的每個位置都引用相同的對象。如果這不是你想要的東西,那麼你必須爲數組中的每個元素創建一個新的SubnetItem

for (int i = 0; i < subnetArray.length; i++) { 
    subnetArray[i] = new SubnetItem(subnetNumber, fullBroadcastAddress, fullStartHost, 
            fullEndHost, fullBroadcastAddress); 
} 
+0

爲什麼我不能使用每個循環來填充數組?感謝您的幫助! – chrislbaird

+0

因爲循環變量不是直接指向數組,所以它只是數組中值的一個副本。如果修改副本,則不會修改原始數組。 – Jesper

+0

所以每個循環的a不能用來修改數組中的任何項目? – chrislbaird