我有一个家庭作业,在这里我需要实现两个可以展平两个2d数组的方法。一个是int类型,另一个是string类型。当我运行程序时,会遇到两个异常,一个NumberFormatException
尝试打印String数组,一个ArrayIndexOutOfBoundsException
尝试打印int数组。我唯一可以更改的方法是名为flatten的方法。我有两个问题。首先是我不明白为什么我得到了ArrayIndexOutOfBoundsException或如何解决它。第二个是,虽然我确实理解为什么会收到NumberFormatException,但不确定如何解决。
public class Flatten {
public static void main(String[] argv) {
int[][] x = {
{},
{1,},
{1, 2,},
{1, 2, 3,},
{1, 2, 3, 4,},
{1, 2, 3, 4, 5,},
{1, 2, 3, 4, 5, 6,},
};
print(flatten(x));
String[][] y = {
{"if", "else", "switch",},
{"while", "do while", "for",},
{"break", "continue",},
{"*", "/", "%", "+", "-",},
{">", ">=", "<=", "<", "==", "!=",},
{"&&", "||", "!",},
{"<<", ">>", ">>>", "&", "|", "^", "~",},
};
print(flatten(y));
}
/**
* Prints a "flattened" 1d-array of ints.
*
* @param a the flattened array to print
*/
static void print(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print("{ ");
for (int j = 0, k = a[i]; j < k; j++)
System.out.print(a[++i] + ", ");
System.out.println("}");
}
}
/**
* Prints a "flattened" 1d-array of String objects.
*
* @param a the flattened array to print
*/
static void print(String[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print("{ ");
for (int j = 0, k = Integer.parseInt(a[i]); j < k; j++)
System.out.print("\"" + a[++i] + "\", ");
System.out.println("}");
}
}
/**
* TBI (To Be Implemented)...
* <p>
* This method "flattens" a 2-dimensional int-array
* into a 1-dimensional int-array. The algorithm
* for flattening the 2d array is defined by code
* in the print(int[]) method.
*
* @param x 2-dimensional int-array to "flatten"
* @return the "flattened" 1-dimensional int-array
*/
static int[] flatten(int[][] x) {
int count = 0;
for (int i = 0; i < x.length; i++) {
count += x[i].length;
}
int[] arr = new int[count];
int index = 0;
for (int row = 0; row < x.length; row++) {
for (int col = 0; col < x[row].length; col++) {
arr[index] = x[row][col];
index++;
}
}
return arr;
}
/**
* TBI (To Be Implemented)...
* <p>
* This method "flattens" a 2-dimensional String-array
* into a 1-dimensional String-array. The algorithm
* for flattening the 2d array is defined by code
* in the print(String[]) method.
*
* @param x 2-dimensional String-array to "flatten"
* @return the "flattened" 1-dimensional String-array
*/
static String[] flatten(String[][] x) {
int count = 0;
for (int i = 0; i < x.length; i++) {
count += x[i].length;
}
String[] arr = new String[count];
int index = 0;
for (int row = 0; row < x.length; row++) {
for (int column = 0; column < x[row].length; column++) {
arr[index] = x[row][column];
index++;
}
}
return arr;
}
}
我希望输出如下所示:https://i.imgur.com/W0lD2wO.png
任何有关如何解决这些错误并在将来避免它们的想法都将受到赞赏。
编辑:这是引发异常的地方 https://i.imgur.com/T2VzCc8.png https://i.imgur.com/8HS0Vxt.png