【发布时间】:2017-11-03 08:40:48
【问题描述】:
我正在尝试创建一个输出模式的数组,该模式取决于我为输入提供的行数和列数,当它到达第三种方法时我收到错误。我知道数组从索引零开始,如果我为矩阵输入 (0 0) 它超出了界限,但我不知道如何解决这个问题。感谢您的帮助!
这是我的头等舱代码:
public class Transpose {
public static int [][] createPatterned2DArray(int rows, int cols)
{
int [][] table = new int [rows] [cols];
for (int numRows = 0; numRows < table.length; numRows++){
for (int numCols = 0; numCols < table[0].length; numCols++){
table [numRows][numCols] = 10 + rows*(numRows +1) + numCols;
}
}
return table;
}
public static void print2DArray (int[][] matrix)
{
for (int row = 0; row < matrix.length; row++)
{
for (int col = 0; col < matrix[0].length; col++)
{
System.out.printf("%-4d",matrix[row][col]);
}
System.out.println();
}
}
public static void print2DArrayTransposed(int [][] matrix)
{
for (int row = 0; row < matrix[0].length; row++)
{
for (int col = 0; col < matrix.length; col++)
{
//try {
// if (matrix[0] == 0) {
// System.out.println(matrix[0][0]);
// throw new Exception();
System.out.printf("%-4d",matrix [col][row]);
// }
//catch (Exception e){
// System.out.print(e);
}
System.out.println();
}
}
}
这里是第二类:
import java.util.*;
public class TestTranspose extends Transpose {
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
int rows = scan.nextInt();
int cols = scan.nextInt();
int [][] table = createPatterned2DArray(rows,cols);
print2DArray(table);
System.out.println();
print2DArrayTransposed(table);
System.out.println();
}
}
这是我遇到的错误,它让我发疯! 当我为数组输入 (0 0) 的输入时,我似乎无法理解如何抛出异常或使输出不显示任何内容。如何更正这行代码不允许我输出 (0 0) 的数组?
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Transpose.print2DArrayTransposed(Transpose.java:32)
at TestTranspose.main(TestTranspose.java:13)
【问题讨论】:
标签: java arrays exception multidimensional-array indexoutofboundsexception