我正在尝试颠倒数组中字符串的顺序。我收到错误:索引 3 超出长度 1 的范围。如果我使用数字而不是单词,这适用于 int。你能帮我吗?
public class Main {
public static void main(String[] args) {
// write your code here
String [][] arr = {{"My"}, {"name" }, {"is"}, {"John"}};
String arr1 = arr[0][3];
String arr2 = arr[0][2];
String arr3 = arr[0][1];
String arr4 = arr[0][0];
String arrAll = arr1+arr2+arr3+arr4;
System.out.println(arrAll);
}
}
答案 0 :(得分:1)
将一个二维数组想象成一个由行和列组成的矩阵。要找出 arr
中有多少行,请使用以下代码。
arr.length
你会发现这会返回 4。
要获取 arr
中的第一行,请使用以下代码。
arr[0]
同样,要获取第二行,请使用以下代码。
arr[1]
每一行可能有不同的列数,尽管在您问题的代码中,每一行都有一列。
获取第一行的列数,代码为
arr[0].length
要获取二维数组中的单个元素,您需要按此顺序获得行索引和列索引。因此,要获取第一行第一列中的元素,请使用以下内容
arr[0][0]
由于第一行只有一列,因此以下将导致抛出 ArrayIndexOutOfBoundsException
。
arr[0][1]
这解释了为什么 arr[0][3]
给您一个错误。您正在尝试访问第一行第四列中的元素,但第一行只有一列。
以下代码将提供您想要的结果。
String[][] arr = {{"My"}, {"name" }, {"is"}, {"John"}};
int rows = arr.length;
System.out.println("rows = " + rows);
for (int i = 0; i < rows; i++) {
System.out.println("row " + i + " columns = " + arr[i].length);
}
String arr1 = arr[3][0];
String arr2 = arr[2][0];
String arr3 = arr[1][0];
String arr4 = arr[0][0];
String arrAll = arr1+arr2+arr3+arr4;
System.out.println(arrAll);
运行上面的代码会产生以下结果。
rows = 4
row 0 columns = 1
row 1 columns = 1
row 2 columns = 1
row 3 columns = 1
JohnisnameMy
答案 1 :(得分:0)
如果你想打印单词,你只需要:
public static void main(String[] args) {
// write your code here
String [][] arr = {{"My"}, {"name" }, {"is"}, {"John"}};
String [] arr1 = arr[3];
String [] arr2 = arr[2];
String [] arr3 = arr[1];
String [] arr4 = arr[0];
String arrAll = arr1[0]+arr2[0]+arr3[0]+arr4[0];
System.out.println(arrAll);
}
答案 2 :(得分:0)
你有一个字符串数组。
因此,当您访问 arr[0]
时,您正在访问字符串 {"My"}
的第一个数组。因此,arr[0][3]
尝试从字符串数组数组的第一行访问第三个元素,实际上并不存在,因为字符串数组只有一个元素 length 1
,因此您正在获取 ArrayIndexOutOfBoundException
。
如果您想反转句子,则只能使用数组的第一个索引arr[0],arr[1],arr[2] & arr[3]
。
答案 3 :(得分:0)
我相信您正在尝试选择每个内部数组的第一个元素。
因此,您提供的第一个索引必须是内部数组的索引。第二个必须是该内部数组中元素的索引。换句话说,它是 arr[innerArrayIndex][elementIndex]
并且由于所有内部数组都只有一个元素,因此第二个索引必须为零。
String arr1 = arr[3][0];
String arr2 = arr[2][0];
String arr3 = arr[1][0];
String arr4 = arr[0][0];