1

So I create the array that will hold a cd collection. The only problem is the maximum array size is 50, how do I fill the array with empty objects if there's 50 objects?:

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......
    }

I know this cannot be correct...

EDIT (this truly was quite easy in hindsight):

String[] songArray = new String[50];
for (int i = 0; i < 50; i++)
    songArray[i] = new String("");
12
  • 2
    Keep doing the same thing 50 times. Commented Dec 3, 2013 at 4:07
  • Really? There's nothing more efficient? @SotiriosDelimanolis Commented Dec 3, 2013 at 4:08
  • why dint u created dynamic array ??it would be more efficient Commented Dec 3, 2013 at 4:08
  • @KamleshArya could you explain more? Commented Dec 3, 2013 at 4:09
  • 1
    Use a loop. See tutorialspoint.com/java/java_loop_control.htm Commented Dec 3, 2013 at 4:10

3 Answers 3

3

Arrays.fill() maybe can help you: http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

Also, if you are using Apache Commons Lang, you can use ArrayUtils.nulltoEmpty()

Sign up to request clarification or add additional context in comments.

Comments

1

Use Arrays#fill. For more details, check out the Javadoc. A typical use is as follows:

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

Edit: The two numbers 0 and a.length - 1 are the initial and final indices to be filled with the given value (in this case, stringToFillWith).

Comments

1

In Java, whenever you initialize an array, the array will have some default value that "fills up" all of the newly formed array. For numerical values, they are zero, and null for arrays storing objects:

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

If you want songArray to begin with only null values before they have "CDs" added, then no further work is needed. If you want songArray to begin with all "" values then use Arrays.fill:

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

Note that you can also easily do this manually using a for loop, rather than copying and pasting a line of code 50 times:

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

1 Comment

Thanks for the answer. This is obviously for a class, and we haven't gone over Arrays.fill so I went with the for loop which is what we actually went over in class (the class I wasn't in, of course). But I will keep Arrays.fill in mind!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.