2013-12-03 2 views
0

Итак, я создаю массив, в котором будет храниться коллекция cd. Единственная проблема, максимальный размер массива 50, как я заполнить массив с пустыми объектами, если есть 50 объектов ?:Как заполнить массив строк пустыми объектами?

public static void main(String[] args) throws IOException 
    { 
    final int MAX_ARRAY_SIZE = 50; 
    final String FILENAME = "Collection.txt"; 

    CDOutput out = new CDOutput(); 
    CDInput in = new CDInput(); 

    int count = 0; // Counter to keep track of number of elements in the array 
    int choice = 0; // Menu choice 

    String[] songArray = new String[MAX_ARRAY_SIZE]; // Create array to hold song collection 

    { 
    songArray[0] = new String("");// Fill array with empty objects ???????? 
    songArray[1] = new String(""); 
    songArray[2] = new String(""); 
    songArray[3] = new String(""); 
    songArray[4] = new String(""); 
    songArray[5] = new String(""); 
    songArray[6] = new String(""); 
    songArray[6] = new String(""); 
    songArray[7] = new String(""); 
    songArray[8] = new String(""); 
    songArray[9] = new String(""); 
    songArray[10] = new String(""); 
    songArray[11] = new String(""); 
    songArray[12] = new String(""); 
    songArray[13] = new String(""); 
    songArray[14] = new String(""); 
    songArray[15] = new String(""); 
    songArray[16] = new String(""); 
    songArray[17] = new String(""); 
    songArray[18] = new String(""); //and so on...... 
    } 

Я знаю, что это не может быть правильным ...

EDIT (это действительно было довольно легко задним числом):

String[] songArray = new String[50]; 
for (int i = 0; i < 50; i++) 
    songArray[i] = new String(""); 
+2

Продолжайте делать то же самое 50 раз. –

+0

Действительно? Нет ничего более эффективного? @SotiriosDelimanolis – user3029836

+0

Почему dint u создал динамический массив? Было бы более эффективно –

ответ

1

Использование Arrays#fill. Для получения дополнительной информации ознакомьтесь с Javadoc. Типичное использование выглядит следующим образом:

String[] a = new String[5]; 
String stringToFillWith = ""; 
Arrays.fill(a, 0, a.length - 1, stringToFillWith); 

Редактировать: Два числа 0 и a.length - 1 начальные и конечные показатели должны быть заполнены с заданным значением (в данном случае, stringToFillWith).

1

В Java, всякий раз, когда вы инициализируете массив, массив будет иметь значение по умолчанию, которое «заполняет» все вновь сформированный массив. Для численных значений, то они равны нулю, и null для массивов хранения объектов:

  • boolean[]: false
  • char[]: '\u0000'
  • byte[], short[], int[],, long[]: 0
  • double[], float[]. : 0.0
  • String[], Object[] и т.д.: null

Если вы хотите songArray начать только null значений, прежде чем они имеют "диски" не было добавлено, то нет необходимости дальнейшей работы. Если вы хотите songArray начать все "" значений используйте Arrays.fill:

import java.util.Arrays; 
.... 
String[] songArray = new String[MAX_ARRAY_SIZE]; 
Arrays.fill(songArray, ""); 

Обратите внимание, что вы можете легко сделать это вручную с помощью for цикла, а не копировать и вставить строку кода в 50 раз:

for (int i = 0; i < MAX_ARRAY_SIZE; i++) 
{ 
    songArray[i] = ""; 
} 
+0

Спасибо за ответ. Это очевидно для класса, и мы не перешли на Arrays.fill, поэтому я пошел с циклом 'for', который мы фактически перешли в классе (класс, в котором я не был, конечно). Но я буду держать Arrays. Запомните! – user3029836

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