diff --git a/a0/src/com/CS3310/a0/Controller.java b/a0/src/com/CS3310/a0/Controller.java new file mode 100644 index 0000000000000000000000000000000000000000..9b39e60bb82709190d8a89f3c326cd320cf19e2d --- /dev/null +++ b/a0/src/com/CS3310/a0/Controller.java @@ -0,0 +1,163 @@ +package com.CS3310.a0; + + +import java.util.Arrays; +import java.util.Random; +import java.util.Scanner; + + +/** + * Handles main program functionality. + */ +public class Controller { + + //region Variables + private int arrayIndex1; + private int arrayIndex2; + private int arrayDim1; + private int arrayDim2; + private String tempString; + private char[][] charArray; + private Random random = new Random(); + private Scanner reader = new Scanner(System.in); + + //endregion Variables + + + + //region Constructor + + /** + * Base constructor + */ + public Controller() { + boolean runProgram = true; + + while (arrayDim1 < 1 || arrayDim2 < 1) { + GetArrayDimensions(); + } + CreateArray(); + + while (runProgram) { + + } + } + + //endregion Constructor + + + + //region Methods + + /** + * Creates initial 2D array. + * Values are filled in with random lowercase letters. + */ + private void CreateArray() { + int randomInt; + char[] tempChar; + + charArray = new char[arrayDim1][arrayDim2]; + + // Populate array with random lowercase characters. + for (arrayIndex1 = 0; arrayIndex1 < arrayDim1; arrayIndex1++) { + for (arrayIndex2 = 0; arrayIndex2 < arrayDim2; arrayIndex2++) { + randomInt = random.nextInt(26); + randomInt = randomInt + 97; // Set to valid ascii codes. + tempChar = Character.toChars((char) randomInt); + 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. + */ + private void Sort2DArray() { + int tempArrayIndex = 0; + char[] tempArray = new char[arrayDim1 * arrayDim2]; + + // Translate values into sortable 1d-Array. + for (arrayIndex1 = 0; arrayIndex1 < arrayDim1; arrayIndex1++) { + for (arrayIndex2 = 0; arrayIndex2 < arrayDim2; arrayIndex2++) { + tempArray[tempArrayIndex] = charArray[arrayIndex1][arrayIndex2]; + tempArrayIndex++; + } + } + + // Sort 1D-Array. + Arrays.sort(tempArray); + + // Translate values back into 2d-Array + tempArrayIndex = 0; + for (arrayIndex1 = 0; arrayIndex1 < arrayDim1; arrayIndex1++) { + for (arrayIndex2 = 0; arrayIndex2 < arrayDim2; arrayIndex2++) { + charArray[arrayIndex1][arrayIndex2] = tempArray[tempArrayIndex]; + tempArrayIndex++; + } + } + } + + + /** + * Prints current array values. + */ + private void Print2DArray() { + for (int index1 = 0; index1 < arrayDim1; index1++) { + for (int index2 = 0; index2 < arrayDim2; index2++) { + System.out.println(charArray[index1][index2]); + } + } + } + + + /** + * Prompt for and acquire user input. + * @param promptString String to show user. + * @return String of user's input. + */ + private String GetUserInput(String promptString) { + System.out.println(promptString); + return reader.next().toLowerCase(); + } + + + /** + * Print help text for user. + */ + private void PrintHelp() { + System.out.println("To change array dimensions, type 'Dimensions'"); + 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"); + } + + //endregion Methods +} diff --git a/a0/src/com/CS3310/a0/Main.java b/a0/src/com/CS3310/a0/Main.java index 3f88f4730217bb35c1254820aea2dc99cfebf36c..28d172cbeb7364e0cbfc9da62d0f2f1b5f558cc4 100644 --- a/a0/src/com/CS3310/a0/Main.java +++ b/a0/src/com/CS3310/a0/Main.java @@ -1,12 +1,13 @@ package com.CS3310.a0; -import java.util.Calendar; -import java.util.Date; - - +/** + * Main. Starts program. + */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) { + // Create class to run program from non-static source. + Controller controller = new Controller(); } } diff --git a/a0/src/com/CS3310/a0/tests/ComputeTimeTest.java b/a0/src/com/CS3310/a0/tests/ComputeTimeTest.java index 26e35cd0d48b3e592c915a69d514e1f14c5e33e4..f3f18d55302d69a952018a6cb5876178da08264e 100644 --- a/a0/src/com/CS3310/a0/tests/ComputeTimeTest.java +++ b/a0/src/com/CS3310/a0/tests/ComputeTimeTest.java @@ -7,6 +7,7 @@ import org.junit.Test; import com.CS3310.a0.ComputeTime; + public class ComputeTimeTest { //region Variables