尝试打印转置的2d数组时出错

时间:2017-01-19 18:29:14

标签: java arrays

在编写我的代码时,我会陷入困境,我试图返回新的转置数组并实际转换数组本身。我得到的错误无法将int转换为int [] []。我认为trans将是一个数组var。问题代码处于最低点。任何帮助是极大的赞赏。

 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
    // It prints each row on one line with newlines between rows
public static void print2DIArray(int[][] output) {

    for (int row = 0; row < output.length; row++) {
        for (int column = 0; column < output[row].length; column++) {
            System.out.print(output[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;
    int col=0;
    int arow=0;
    int acol=0;
    int 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;
}


 //!!! problem code here!!!
public static int[][] transposition(int [][] iArray) {

    int m = iArray.length;
    int n = iArray[0].length;

    int trans[][];

    for(int y = 0; y<m; y++){
        for(int x = 0; x<n; x++){
            trans = iArray[y][x] ;
        }

    }
      return trans;
}

}

1 个答案:

答案 0 :(得分:2)

你错过了两件事

1。)初始化trans

    int trans[][]= new int [n][m];

2。)trans是一个2D数组

   trans[y][x] = iArray[y][x] ;
   //trans = iArray[y][x] ; error

更新:要形成这种逻辑,我们需要像这样的

索引映射
  //    trans                       iArray  
// assign values column-wise         row-wise
    // trans[0][0]      <=        iArray[0][0]
    // trans[1][0]      <=        iArray[0][1]
    // trans[2][0]      <=        iArray[0][2]

平均遍历iArrays行,并将值分配给trans数组列

int m = iArray.length;
int n = iArray[0].length;
// iArray[2][3]

int trans[][] = new int[n][m];
//                      3  2
for(int y = 0; y<m; y++){
    for(int x = 0; x<n; x++){
        trans[x][y] = iArray[y][x] ;
    }

}