2015-09-05 3 views
1

Я пытаюсь заполнить массив subnetItems примером элемента 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

, так что для каждого цикла нельзя использовать какой-либо элемент в массиве? – chrislbaird

Смежные вопросы