Using Arrays

You use arrays in a program as you would use any variable, except for the element number in between the square brackets next to the array's name. Once you refer to the element number, you can use an array element anywhere a variable could be used. The following statements all use arrays that have already been defined in this hour's examples:

elfSeniority[193] += 1;
niceChild[94287612] = "Max";
if (hostileAirTravelNations[currentNation] == true)
 sendGiftByMail();


An important thing to note about arrays is that the first element of an array is numbered 0 instead of 1. This means that the highest number is one less than you might expect. For example, consider the following statement:

String[] topGifts = new String[10];


This statement creates an array of string variables that are numbered from 0 to 9. If you referred to topGifts[10] somewhere else in the program, you would get an error message like the following when you run the program:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
 at Gift.main(Gift.java:4);


Like all of the error messages encountered in Java, this one's a bit hard to decipher. The key thing to note is the part that mentions an exception, because exceptions are another word for errors in Java programs. This exception is an "array index out of bounds" error, which means that a program tried to use an array element that doesn't exist within its defined boundaries.

By the Way

This error could have occurred when you ran the Blanks app in Hour 4, "Understanding How Java Programs Work." The program tried to use the arrayelements arguments[0], arguments[1], and arguments[2]. If too-few arguments are specified when the program is run, those array references will cause an out-of-bounds error.


If you want to check the upper limit of an array during a program so that you can avoid going beyond that limit, you can use a variable called length that is associated with each array that is created. The length variable is an integer that contains the number of elements an array can hold. The following example creates an array and then reports its length:

String[] reindeerNames = { "Dasher", "Dancer", "Prancer", "Vixen",
 "Comet", "Cupid", "Donder", "Blitzen", "Rudolph" };
System.out.println("There are " + reindeerNames.length + " reindeer.");


In this example, the value of reindeerNames.length is 9, which means that the highest element number you can specify is 8. There are two primary ways to work with text in Java: a string or an array of characters. When you're working with strings, one useful technique is to put each character in a string into its own element of a character array. To do this, call the string's toCharArray() method, which produces a char array with the same number of elements as the length of the string. This hour's first project is an app that uses both of the techniques introduced in this section. The NoSpaces program displays a string with all space characters (' ') replaced with periods ('.'). Enter the text of Listing 9.1 in your word processor and save the file as NoSpaces.java.

Listing 9.1. The Full Text of NoSpaces.java
 1: class NoSpaces {
 2: public static void main(String[] arguments) {
 3: String mostFamous = "Rudolph the Red-Nosed Reindeer";
 4: char[] mfl = mostFamous.toCharArray();
 5: for (int dex = 0; dex < mfl.length; dex++) {
 6: char current = mfl[dex];
 7: if (current != ' ') {
 8: System.out.print(current);
 9: } else {
10: System.out.print('.');
11: }
12: }
13: }
14: }


Compile and run this program using your Java development environment. The following commands can be used with the JDK:

javac NoSpaces.java java NoSpaces


This program produces the following output:

Rudolph.the.Red-Nosed.Reindeer


The NoSpaces app stores the text Rudolph the Red-Nosed Reindeer in two places: a string called mostFamous, and a char array called mfl. The array is created in line 4 by calling the toCharArray() method of mostFamous, which fills an array with one element for each character in the text. The character R goes into element 0, u into element 1, d into element 2, and so on, up to r in element 29. The for loop in lines 5–12 looks at each character in the mfl array. If the character is not a space, it is displayed. If it is a space, a . character is displayed instead.

      
Comments