0

Implement a method/function that produces running sum runningSum2DArray(int[][] array, int dir) across rows (left to right or right to left) or columns (top to bottom or bottom to top)

Input to the method: A 4x4 two dimensional int array and an integer (1, 2, 3 or 4 for left, right, up, down respectively).

Output: The modified array after producing the running sums according to the direction.

For example: If the input to the method is the same as the earlier 2D array,

10 15 30 40

15 5 8 2

20 2 4 2

1 4 5 0

and if the direction is 2 (right),the output array would be printed as:

10 25 55 95

15 20 28 30

20 22 26 28

1 5 10 10

Now, Implement another function runningSum2DArrayList(ArrayList< ArrayList< Integer > > list, int dir) that performs the same functionality.

My main method is as follows:

import java.util.ArrayList;
import java.util.Scanner;

public class Lab3Task2 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        //input arrays with ";" between them
        String[] temp = scanner.nextLine().split(";");

        //input integers with white space between them
        int[][] arr = new int[4][4];
        for(int i = 0; i < 4; i++){
            String[] tempA = temp[i].split("\\s");
            for(int j = 0; j < 4; j++){
                arr[i][j] = Integer.parseInt(tempA[j]);
            }
        }

        //input integers with white space between them
        ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
        for(int i = 0; i < 4; i++){
            String[] tempA = temp[i].split("\\s");
            list.add(i, new ArrayList<Integer>());
            for(int j = 0; j < 4; j++){
                list.get(i).add(j, Integer.parseInt(tempA[j]));
            }
        }

        runningSum2DArray(arr, 1);
        runningSum2DArray(arr, 2);
        runningSum2DArrayList(list, 3);
        runningSum2DArrayList(list, 4);

        scanner.close();
    }
}
StaticBeagle
  • 5,070
  • 2
  • 23
  • 34
Snh1726
  • 1
  • 1

1 Answers1

0

If you can access an element at row i and column j in a 2D array, by using arr[i][j], then for an ArrayList<ArrayList<Integer>> list, you can get the same element as list.get(i).get(j).

I am not sure why you are not able to print this information.

You can also print the list, just by using System.out.println(list). It will give output in the format -

[[comma separated value from first array list],[...],[...],[csv from last arraylist]]

If you don't want to print in this format, then loop and print individual elements as you wish.

uneq95
  • 2,158
  • 2
  • 17
  • 28