Chapter 6: Arrays and ArrayLists
Highlights review:
- In Java, arrays are objects
- Arrays can be create with the “new” operator: int[] height = new int[11]
- Arrays can also be created in using this format: int[] scores = {76, 87, 99}
- The index operator [ ] performs automatic bounds checking
- Beware of the off-by-one errors in a program
- Either syntax int[] grades or int grades[] is correct
NOTE: The following programs and the pdf are stored in edmodo’s folder. Get familiar with all these programs and their algorithms to further develop assignments.
//******************************************************************** // BasicArray.java Author: Lewis/Loftus/Cocking // // Demonstrates basic array declaration and use. //******************************************************************** public class BasicArray { final static int LIMIT = 15; final static int MULTIPLE = 10; //----------------------------------------------------------------- // Creates an array, fills it with various integer values, // modifies one value, then prints them out. //----------------------------------------------------------------- public static void main (String[] args) { int[] list = new int[LIMIT]; // Initialize the array values for (int index = 0; index < LIMIT; index++) list[index] = index * MULTIPLE; list[5] = 999; // change one array value for (int index = 0; index < LIMIT; index++) System.out.print (list[index] + " "); System.out.println (); } }
//******************************************************************** // Primes.java Author: Lewis/Loftus/Cocking // // Demonstrates the use of an initializer list for an array. //******************************************************************** public class Primes { //----------------------------------------------------------------- // Stores some prime numbers in an array and prints them. //----------------------------------------------------------------- public static void main (String[] args) { int[] primeNums = {2, 3, 5, 7, 11, 13, 17, 19}; System.out.println ("Array length: " + primeNums.length); System.out.println ("The first few prime numbers are:"); for (int scan = 0; scan < primeNums.length; scan++) System.out.print (primeNums[scan] + " "); System.out.println (); } }
Printing an array of integers in reverse order:
//******************************************************************** // ReverseOrder.java Author: Lewis/Loftus/Cocking // // Demonstrates array index processing. //******************************************************************** import java.util.Scanner; public class ReverseOrder { //----------------------------------------------------------------- // Reads a list of numbers from the user, storing them in an // array, then prints them in the opposite order. //----------------------------------------------------------------- public static void main (String[] args) { double[] numbers = new double[10]; Scanner scan = new Scanner(System.in); System.out.println ("The size of the array: " + numbers.length); for (int index = 0; index < numbers.length; index++) { System.out.print ("Enter number " + (index+1) + ": "); numbers[index] = scan.nextDouble(); } System.out.println ("The numbers in reverse order:"); for (int index = numbers.length-1; index >= 0; index--) System.out.print (numbers[index] + " "); System.out.println (); } }
Output:
The size of the array: 10
Enter number 1: 18.36
Enter number 2: 48.9
Enter number 3: 53.3
Enter number 4: 21.9
Enter number 5: 34.7
Enter number 6: 12.5
Enter number 7: 78.4
Enter number 8: 98.1
Enter number 9: 99.0
Enter number 10: 37.9
The numbers in reverse order:
37.9 99.0 98.1 78.4 12.5 34.7 21.9 53.3 48.9 18.36
Letter counting
//******************************************************************** // LetterCount.java Author: Lewis/Loftus/Cocking // // Demonstrates the relationship between arrays and strings. //******************************************************************** import java.util.Scanner; public class LetterCount { //----------------------------------------------------------------- // Reads a sentence from the user and counts the number of // uppercase and lowercase letters contained in it. //----------------------------------------------------------------- public static void main (String[] args) { final int NUMCHARS = 26; Scanner scan = new Scanner(System.in); int[] upper = new int[NUMCHARS]; int[] lower = new int[NUMCHARS]; char current; // the current character being processed int other = 0; // counter for non-alphabetics System.out.println ("Enter a sentence:"); String line = scan.nextLine(); // Count the number of each letter occurence for (int ch = 0; ch < line.length(); ch++) { current = line.charAt(ch); if (current >= 'A' && current <= 'Z') upper[current-'A']++; else if (current >= 'a' && current <= 'z') lower[current-'a']++; else other++; } // Print the results System.out.println (); for (int letter=0; letter < upper.length; letter++) { System.out.print ( (char) (letter + 'A') ); System.out.print (": " + upper[letter]); System.out.print ("\t\t" + (char) (letter + 'a') ); System.out.println (": " + lower[letter]); } System.out.println (); System.out.println ("Non-alphabetic characters: " + other); } }
Output:
Enter a sentence:
In Casablanca, Humprey Bogart never says "Play it again, Sam."
A: 0 a: 10 B: 1 b: 1 C: 1 c: 1 D: 0 d: 0 E: 0 e: 3 F: 0 f: 0 G: 0 g: 2 H: 1 h: 0 I: 1 i: 2 J: 0 j: 0 K: 0 k: 0 L: 0 l: 2 M: 0 m: 2 N: 0 n: 4 O: 0 o: 1 P: 1 p: 1 Q: 0 q: 0 R: 0 r: 3 S: 1 s: 3 T: 0 t: 2 U: 0 u: 1 V: 0 v: 1 W: 0 w: 0 X: 0 x: 0 Y: 0 y: 3 Z: 0 z: 0
Non-alphabetic characters: 14
Array length: 8 The first few prime numbers are: 2 3 5 7 11 13 17 19
Helpful notes for testing purposes:
Instead of entering manually input, you could put the data in a file like input.data. Take a look at an easy way to read data from a file:
import java.util.Scanner; public class ScannerInTerminal { public static void main(String [] args) { Scanner sc = new Scanner(System.in); String fromTerm = sc.next(); System.out.println(fromTerm); } }
Then you can run it in Terminal
mrseliaTerminal%: java ScannerInTerminal < input.txt
3.14159…
Classwork:
Programming Projects 6.1, 6.2, 6.4 and 6.5
Homework:
Short Answers 6.1, 6.2 and 6.3
Read pages 298 through 311