diff --git a/a0/src/com/CS3310/a0/Controller.java b/a0/src/com/CS3310/a0/Controller.java index 9b39e60bb82709190d8a89f3c326cd320cf19e2d..1dd381f171d85522d00bbc21ba7e99f8c3db6acf 100644 --- a/a0/src/com/CS3310/a0/Controller.java +++ b/a0/src/com/CS3310/a0/Controller.java @@ -36,10 +36,31 @@ public class Controller { while (arrayDim1 < 1 || arrayDim2 < 1) { GetArrayDimensions(); } + CreateArray(); + PrintHelp(); while (runProgram) { - + tempString = GetUserInput(); + switch (tempString) { + case "help": + PrintHelp(); + break; + case "dimensions": + GetArrayDimensions(); + CreateArray(); + break; + case "sort": + Sort2DArray(); + break; + case "print": + Print2DArray(); + break; + case "exit": + runProgram = false; + default: + SearchName(tempString); + } } } @@ -49,6 +70,8 @@ public class Controller { //region Methods + //region Array Management Methods + /** * Creates initial 2D array. * Values are filled in with random lowercase letters. @@ -68,34 +91,9 @@ public class Controller { charArray[arrayIndex1][arrayIndex2] = tempChar[0]; } } - - Print2DArray(); - System.out.println(); - System.out.println("Sorting..."); - System.out.println(); - Sort2DArray(); - Print2DArray(); } - /** - * Sets dimensions of 2d-Array. - */ - private void GetArrayDimensions() { - tempString = GetUserInput("Enter first array length: "); - try { - arrayDim1 = Integer.parseInt(tempString); - } catch (Exception e) { - System.out.println("Invalid int value."); - } - tempString = GetUserInput("Enter second array length: "); - try { - arrayDim2 = Integer.parseInt(tempString); - } catch (Exception e) { - System.out.println("Invalid int value."); - } - } - /** * Sorts current array values alphabetically. */ @@ -126,14 +124,66 @@ public class Controller { /** - * Prints current array values. + * Iterate through each char in name and search for value in array. + * @param name Name to search through. */ - private void Print2DArray() { - for (int index1 = 0; index1 < arrayDim1; index1++) { - for (int index2 = 0; index2 < arrayDim2; index2++) { - System.out.println(charArray[index1][index2]); + private void SearchName(String name) { + int stringLength = name.length();; + int index = 0; + char tempChar; + + while (index < stringLength) { + tempChar = name.charAt(index); + LinearSearch(tempChar); + index++; + } + System.out.println(); + } + + + /** + * Linearly search through array for given value. + * @param searchValue Char to search for. + */ + private void LinearSearch(char searchValue) { + int index1 = -1; + int index2 = -1; + arrayIndex1 = 0; + + // Search through Array until value found or end of array. + while (arrayIndex1 < arrayDim1) { + arrayIndex2 = 0; + while (arrayIndex2 < arrayDim2) { + if (charArray[arrayIndex1][arrayIndex2] == searchValue) { + index1 = arrayIndex1; + index2 = arrayIndex2; + arrayIndex1 = arrayDim1; + arrayIndex2 = arrayDim2; + } + arrayIndex2++; } + arrayIndex1++; } + // Send found values or -1 if not found. + PrintArraySearch(searchValue, index1, index2); + } + + + private void BinarySearch() { + + } + + //endregion Array Management Methods + + + //region User Interface Methods + + /** + * Acquire user input. + * @return String of user's input. + */ + private String GetUserInput() { + return reader.next().toLowerCase(); } @@ -152,12 +202,56 @@ public class Controller { * Print help text for user. */ private void PrintHelp() { + System.out.println("To print current array values, type 'Print'"); System.out.println("To change array dimensions, type 'Dimensions'"); - System.out.println("To sort current array, type 'sort'"); + System.out.println("To sort current array, type 'Sort'"); System.out.println("To show help again, type 'Help'"); System.out.println("To exit program, type 'Exit'"); System.out.println("Otherwise, type name to search in array"); + System.out.println(); } + + /** + * Sets dimensions of 2d-Array. + */ + private void GetArrayDimensions() { + tempString = GetUserInput("Enter first array length: "); + try { + arrayDim1 = Integer.parseInt(tempString); + } catch (Exception e) { + System.out.println("Invalid int value."); + } + tempString = GetUserInput("Enter second array length: "); + try { + arrayDim2 = Integer.parseInt(tempString); + } catch (Exception e) { + System.out.println("Invalid int value."); + } + System.out.println(); + } + + + /** + * Prints current array values. + */ + private void Print2DArray() { + for (int index1 = 0; index1 < arrayDim1; index1++) { + for (int index2 = 0; index2 < arrayDim2; index2++) { + System.out.print(charArray[index1][index2] + " ") ; + } + System.out.println(); + } + System.out.println(); + } + + + + private void PrintArraySearch(char searchValue, int index1, int index2) { + System.out.println(searchValue + ":[" + index1 + "," + index2 + "]"); + } + + //endregion User Interface Methods + //endregion Methods }