Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java calling a print method from a main function and using data from another separate method

Tags:

java

arrays

I'm trying to run a program that constructs a 2D array from user input and then prints the array. The array has to be constructed in one method and print the rows in a separate method. I'm only looking to print each row from the array on a new line. I'm not sure how to pull the array from one method into another.

the code is set up so when the main method is called it will call the "constructor" method to build the array, and then after the array is built it will then take that array and send the data to the print method to print each row. I'm not sure where to proceed from where I'm at in the code, and I still don't understand how to pull data from different methods.

package workfiles;

import java.util.*;
import java.util.Scanner;

public class hw2
{
    // Do not modify this method
    public static void main(String[] args)
    {
        try {
            int[][] iArray = enter2DPosArray();
            System.out.println("The original array values:");
            print2DIArray(iArray);

            int[][] tArray = transposition(iArray);
            System.out.println("The transposed array values:");
            print2DIArray(tArray);
        } catch (InputMismatchException exception) {
            System.out.println("The array entry failed. The program will now halt.");
        }
    }

    // A function that prints a 2D integer array to standard output
    // THIS METHOD IS THE ONE THAT IS SUPOSED TO PRINT THE ROWS ON NEW LINES
    public static void print2DIArray(int[][] output)
    {
        int[][] iArray;

        for (int row = 0; row < iArray.length; row++) {
            for (int column = 0; column < iArray[row].length; column++) {
                System.out.print(iArray[row][column] + " ");
            }
            System.out.println();
        }
    }

    // A function that enters a 2D integer array from the user
    // It raises an InputMismatchException if the user enters anything other
    // than positive (> 0) values for the number of rows, the number of
    // columns, or any array entry
    public static int[][] enter2DPosArray() throws InputMismatchException
    {
        int row = 0, col = 0, arow = 0, acol = 0, holder;

        Scanner numScan = new Scanner(System.in);

        while (row <= 0) {
            System.out.print("How many rows (>0) should the array have? ");
            row = numScan.nextInt();
        }

        while (col <= 0) {
            System.out.print("How many columns (>0) should the array have? ");
            col = numScan.nextInt();
        }

        int[][] iArray = new int[row][col];

        while (arow < row) {
            while (acol < col) {
                System.out.println("Enter a positive (> 0) integer value: ");
                holder = numScan.nextInt();
                iArray[arow][acol] = holder;
                acol++;
            }

            if  (acol >= col) {
                acol = 0;
                arow ++;
            }
        }

        //arrayName[i][j]
        numScan.close();
        return iArray;
    }

    public static int[][] transposition(int[][] iArray)
    {
        int r = 0, c = 0;

        int[][] transpose = new int[r][c];
        for (int i = 0; i < r; i++) {
            for (int j = 0; j < c; j++) {
                transpose[i][j] = iArray[j][i];
            }
        }
        return transpose;
    }
}
like image 737
George Jacob Flamburis Avatar asked Feb 27 '26 22:02

George Jacob Flamburis


2 Answers

public static void print2DIArray(int[][] output) {    
  int[][] iArray;
  for (int row = 0; row < iArray.length; row++) {

When you call the print2DIArray method, you are attempting to iterate over the empty array you just created. I think you want to iterate over the "output" parameter you passed in.

like image 92
Christy Avatar answered Mar 02 '26 12:03

Christy


You can just change the name in your method like this :

print2DIArray(int[][] iArray)

So your code should look like this

//your array can send like an attribute, you can use it like is it
public static void print2DIArray(int[][] iArray) {
    //int[][] iArray you dont need to use another array here

    for (int row = 0; row < iArray.length; row++) {
    //...
like image 26
YCF_L Avatar answered Mar 02 '26 11:03

YCF_L



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!