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;
}
}
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.
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++) {
//...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With