From f1292bb1a72125961bdb3aff09b480893018bc94 Mon Sep 17 00:00:00 2001
From: Brandon Rodriguez <brodriguez8774@gmail.com>
Date: Fri, 22 Sep 2017 00:04:10 -0400
Subject: [PATCH] Add basics for linear search functionality

---
 a0/src/com/CS3310/a0/Controller.java | 158 +++++++++++++++++++++------
 1 file changed, 126 insertions(+), 32 deletions(-)

diff --git a/a0/src/com/CS3310/a0/Controller.java b/a0/src/com/CS3310/a0/Controller.java
index 9b39e60..1dd381f 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
 }
-- 
GitLab