CSE-8B / PA1 / PA1.java
PA1.java
Raw
import java.util.*;

class PA1 {
    public static void main(final String[] args) {
// //print ASCII
        printASCIIValues("Java");
// //1D Array
        int[] arr = {1,2,3,4,5};
        int [] newArr = rotate1DArray(arr, -14);
        System.out.println(Arrays.toString(newArr));

// 2D Array
        int [][] arr2 = {
            {1,2,3},
            {4,5,6},
            {7,8,9},
        };
        int [][] rotateArr2D = rotate2DArray(arr2, -4, false);
        System.out.println(Arrays.deepToString(rotateArr2D));
//printing Introduction
    printIntroduction(null);

        // Test your methods here

    }

    public static void printASCIIValues(String input){
        for(int i = 0; i< input.length(); ++i){
            System.out.println(input.charAt(i) + " " + (int)input.charAt(i));
        }
    }
    //   //  TODO: Fill in this method for Exercise 1

    public static int[] rotate1DArray(final int[] input, final int rotations) {
        final int[] arr1 = input;
        final int[] arr2 = new int[input.length];

        if (rotations > input.length) {
            final int newRot = rotations % input.length;

            for (int i = newRot; i < input.length; ++i) {
                arr2[i] = arr1[i - newRot];
            }
            for (int i = 0; i < newRot; ++i) {
                arr2[i] = input[input.length - newRot + i];
            }
        }
        else if (rotations < 0) {
            final int newRot2 = rotations % input.length * -1;

            for (int i = 0; i < input.length - newRot2; ++i) {
                arr2[i] = arr1[newRot2 + i];
            }
            for (int i = 0; i < newRot2; ++i) {
                arr2[input.length - newRot2 + i] = input[i];
            }
        } else {
            for (int i = rotations; i < input.length; ++i) {
                arr2[i] = arr1[i - rotations];
            }
            for (int i = 0; i < rotations; ++i) {
                arr2[i] = arr1[input.length - rotations + i];
            }

        }
        // TODO: Fill in this method for Exercise 2

        return arr2;
    }

    // 2D array rotation
    public static int[][] rotate2DArray(final int[][] input, final int rotations, final boolean rotateRows) {

        final int[][] newArr = new int[input.length][input[0].length];

        if (rotateRows == false && rotations > input[0].length) {
            final int newFalCol1 = rotations % input[0].length;

            for (int i = 0; i < input.length; i++) {
                for (int j = newFalCol1; j < input[0].length; j++) {
                    newArr[i][j] = input[i][j - newFalCol1];
                }
            }

            for (int i = 0; i < input.length; ++i) {
                for (int j = 0; j < newFalCol1; ++j) {
                    newArr[i][j] = input[i][input[0].length - newFalCol1 + j];
                }
            }
        }

        else if (rotateRows == false && rotations < 0) {
            final int newFalCol1 = rotations % input[0].length * -1;

            for (int i = 0; i < input.length; i++) {
                for (int j = newFalCol1; j < input[0].length; j++) {
                    newArr[i][j - newFalCol1] = input[i][j];
                }
            }

            for (int i = 0; i < input.length; i++) {
                for (int j = 0; j < newFalCol1; j++) {
                    newArr[i][input[0].length + j - newFalCol1] = input[i][j];
                }
            }

        }

        else if (rotateRows == true && rotations > input.length) {

            final int newTruRow = rotations % input.length;

            for (int i = newTruRow; i < input.length; i++) {
                for (int j = 0; j < input[0].length; j++) {
                    newArr[i][j] = input[i - newTruRow][j];
                }
            }
            // Top left box
            for (int i = 0; i < newTruRow; i++) {
                for (int j = 0; j < input[0].length; j++) {
                    newArr[i][j] = input[input.length - newTruRow + i][j];

                }
            }
        }

        else if (rotateRows == true && rotations < 0) {
            final int newTruRow = rotations % input.length * -1;

            for (int i = newTruRow; i < input.length; i++) {
                for (int j = 0; j < input[0].length; j++) {
                    newArr[i - newTruRow][j] = input[i][j];
                }
            }
            // Top left box
            for (int i = 0; i < newTruRow; i++) {
                for (int j = 0; j < input[0].length; j++) {
                    newArr[input.length - newTruRow + i][j] = input[i][j];

                }
            }

        }

        else if (rotateRows == false) {

            for (int i = 0; i < input.length; i++) {
                for (int j = rotations; j < input[0].length; j++) {
                    newArr[i][j] = input[i][j - rotations];

                }
            }

            for (int i = 0; i < input.length; ++i) {
                for (int j = 0; j < rotations; ++j) {
                    newArr[i][j] = input[i][input[0].length - rotations + j];

                }
            }
        }

        else if (rotateRows == true) {
            for (int i = rotations; i < input.length; i++) {
                for (int j = 0; j < input[0].length; j++) {
                    newArr[i][j] = input[i - rotations][j];
                }
            }
            // Top left box
            for (int i = 0; i < rotations; i++) {
                for (int j = 0; j < input[0].length; j++) {
                    newArr[i][j] = input[input.length - rotations + i][j];

                }
            }
        }
        // TODO: Fill in this method for Exercise 3

        return newArr;
    }

    public static void printIntroduction(final String name) {

        // can be a maximum of 30 characters
        // 1st Line 30 asterick
        // 2nd Line start with * and end with *
        // 3rd Line Start with *, space, Message"Hello <name>! Welcome to CSE8B!",
        // space, asterisk

        if(name == null || name == ""){
            String intro = ("* Hello! Welcome to CSE 8B! *");
            for (int i = 0; i < intro.length(); i++) {
                System.out.print("*");
            }

            System.out.print("\n");
            System.out.print("*");
            for (int i = 0; i < intro.length() - 2; i++) {
                System.out.print(" ");
            }
            System.out.print("*");
            System.out.print("\n");

            System.out.print(intro);

            System.out.print("\n");
            System.out.print("*");
            for (int i = 0; i < intro.length() - 2; i++) {
                System.out.print(" ");
            }
            System.out.print("*");
            System.out.print("\n");

            for (int i = 0; i < intro.length(); i++) {
                System.out.print("*");
            }
        }
        else {
        String intro = "* Hello" +" "+ name + "! Welcome to CSE 8B!" + " " + "*";

        for(int i = 0; i < intro.length(); i++){
            System.out.print("*");
        }

        System.out.print("\n");
        System.out.print("*");
        for(int i = 0; i < intro.length() - 2; i++){
            System.out.print(" ");
        }
        System.out.print("*");
        System.out.print("\n");

        System.out.print(intro);

        System.out.print("\n");
        System.out.print("*");
        for (int i = 0; i < intro.length() - 2; i++) {
            System.out.print(" ");
        }
        System.out.print("*");
        System.out.print("\n");
        
        for (int i = 0; i < intro.length(); i++) {
            System.out.print("*");
        }
    }

        // TODO: Fill in this method for Exercise 4

    }
        
}