## 6 Strings, Arrays and Collections
### 6.1 Print 2D Array
The following code creates a 3 x 3 tic-tac-toe grid filled with Xs.
```java
1: void tictactoe()
2: {
3: String [][] grid = new String[3][3];
4:
5: for(int i = 0; i<grid.length; i++)
6: {
7: for (int j = 0; j<grid.length; j++)
8: {
9: grid[i][j] = "X";
10: }
11: }
12: printArray(grid);
13:
14: }
```
Write a method that will print a 2D array of any size. Test it using the 3 x 3 tic-tac-toe grid given above
#### 6.1.1 Example
```
1: tictactoe()
2: *** Output ***
3: | X | X | X |
4: | X | X | X |
5: | X | X | X |
```
### 6.2 Chess Board
Create an 8 x 8 Array to represent a chess board. Print out the array with alternate 'X' and 'O' entries as shown in the example:
#### 6.2.1 Example
```
1: chess();
2: *** Output ***
3: | X | O | X | O | X | O | X | O |
4: | O | X | O | X | O | X | O | X |
5: | X | O | X | O | X | O | X | O |
6: | O | X | O | X | O | X | O | X |
7: | X | O | X | O | X | O | X | O |
8: | O | X | O | X | O | X | O | X |
9: | X | O | X | O | X | O | X | O |
10: | O | X | O | X | O | X | O | X |
```
### 6.3 Digits to Words
Write a method that will convert digits into words
#### 6.3.1 Example
```
1: System.out.println(digitsToWords("35001922"));
2: *** Output ***
3: Three Five Oh Oh One Nine Two Two
```
### 6.4 Time to Words
Write a method that will convert time to words. For example, 4:10 is "Ten past four" and 4:55 is "Five to Five"
#### 6.4.1 Example
```
1: System.out.println(timeToWords("2:05"));
2: System.out.println(timeToWords("2:47"));
3: System.out.println(timeToWords("12:00"));
4: System.out.println(timeToWords("2:00"));
5: System.out.println(timeToWords("12:30"));
6: System.out.println(timeToWords("4:29"));
7: System.out.println(timeToWords("7:25"));
8: System.out.println(timeToWords("12:45"));
9: System.out.println(timeToWords("12:55"));
10: *** Output ***
11: five past two
12: thirteen minutes to two
13: twelve o'clock
14: two o'clock
15: half past past twelve
16: twenty nine minutes past four
17: twenty five past seven
18: Quarter to one
19: five to one
```
### 6.5 Morse Code Arrays
Write a program using arrays that translates plain text into morse code.
<table border="2" rules="groups" cellspacing="0" cellpadding="6"><colgroup><col class="left"> <col class="left"> <col class="left"> <col class="left"> <col class="left"> <col class="left"> <col class="left"></colgroup><tbody><tr><td class="left">A</td><td class="left">B</td><td class="left">C</td><td class="left">D</td><td class="left">E</td><td class="left">F</td><td class="left">G</td></tr><tr><td class="left">.-</td><td class="left">-…</td><td class="left">-.-.</td><td class="left">-..</td><td class="left">.</td><td class="left">..-.</td><td class="left">–.</td></tr><tr><td class="left">H</td><td class="left">I</td><td class="left">J</td><td class="left">K</td><td class="left">L</td><td class="left">M</td><td class="left"></td></tr><tr><td class="left">….</td><td class="left">..</td><td class="left">.---</td><td class="left">-.-</td><td class="left">.-..</td><td class="left">--</td><td class="left"></td></tr><tr><td class="left">N</td><td class="left">O</td><td class="left">P</td><td class="left">Q</td><td class="left">R</td><td class="left">S</td><td class="left">T</td></tr><tr><td class="left">-.</td><td class="left">---</td><td class="left">.–.</td><td class="left">–.-</td><td class="left">.-.</td><td class="left">…</td><td class="left">-</td></tr><tr><td class="left">U</td><td class="left">V</td><td class="left">W</td><td class="left">X</td><td class="left">Y</td><td class="left">Z</td><td class="left"></td></tr><tr><td class="left">..-</td><td class="left">…-</td><td class="left">.--</td><td class="left">-..-</td><td class="left">-.--</td><td class="left">__..</td><td class="left"></td></tr></tbody></table>
#### 6.5.1 Example
```
1: String s = "I never saw a purple cow"
2:
3: morse(s)
4: *** Output ***
5: .. / -. . ...- . .-. / ... .- .-- / .- / .--. ..- .-. .--. .-.. . / -.-. --- .--
```
### 6.6 Demorse Code Arrays
Now write a program using arrays that translates morse back to plain text.
#### 6.6.1 Example
```
1: String s = ".. -././...-/./.-. .../.-/.-- .- .--./..-/.-./.--./.-../. -.-./---/.--"
2:
3: deMorse(s)
4: *** Output ***
5: "I never saw a purple cow"
```
### 6.7 Morse Code Hashmap
Rewrite the Morse Code program using Hashmap
#### 6.7.1 Example
```
1: String s = "I never saw a purple cow"
2: morseHash(s)
3: *** Output ***
4: .. / -. . ...- . .-. / ... .- .-- / .- / .--. ..- .-. .--. .-.. . / -.-. --- .--
```
### 6.8 Demorse Code Hashmap
Rewrite the Demorse Code program using Hashmap
#### 6.8.1 Example
```
1: String s = ".. -././...-/./.-. .../.-/.-- .- .--./..-/.-./.--./.-../. -.-./---/.--"
2: deMorseHash(s)
3: *** Output ***
4: "I never saw a purple cow"
```