如果我不知道數組的第二維,我該如何得到第二維數組? array.length
只給出第一個維度。獲取二維數組的長度
例如,在
public class B {
public static void main(String [] main){
int [] [] nir = new int [2] [3];
System.out.println(nir.length);
}
}
我將如何得到nir
第二個維度,也就是3
感謝
如果我不知道數組的第二維,我該如何得到第二維數組? array.length
只給出第一個維度。獲取二維數組的長度
例如,在
public class B {
public static void main(String [] main){
int [] [] nir = new int [2] [3];
System.out.println(nir.length);
}
}
我將如何得到nir
第二個維度,也就是3
感謝
其中 3的值?您已創建了多維數組。 nir
是int數組的數組;你有兩個長度爲三的數組。
System.out.println(nir[0].length);
會給你你的第一個數組的長度。
另外值得注意的是,你不必像你那樣初始化一個多維數組,這意味着所有的數組不必是相同的長度(或根本不存在)。
int nir[][] = new int[5][];
nir[0] = new int[5];
nir[1] = new int[3];
System.out.println(nir[0].length); // 5
System.out.println(nir[1].length); // 3
System.out.println(nir[2].length); // Null pointer exception
int secondDimensionSize = nir[0].length;
第一維度的每一個元素實際上是另一個陣列與所述第二尺寸的長度。
是的,我沒有這樣想過。非常感謝。 – Numerator
你可以這樣做:
System.out.println(nir[0].length);
但要注意,有在Java中沒有真正的二維數組。每個「第一級」數組包含另一個數組。這些陣列中的每一個都可以具有不同的大小。 nir[0].length
的尺寸不一定與nir[1].length
的尺寸相同。
你可以看看http://anh.cs.luc.edu/170/notes/2dArrays/ar2.html,它有一個很好的圖片來表明。
nir[0].length
注0:你必須有你的數組中最小的一個陣列。
注1:並非所有的子陣列都不需要相同的長度。
假定長度是相同的在第二維中的每個陣列,可以使用
public class B {
public static void main(String [] main){
int [] [] nir= new int [2] [3];
System.out.println(nir[0].length);
}
}
使用
System.out.print(nir[0].length);
看看這個for循環,其打印2維數組的內容 第二個循環遍歷每行中的列
for(int row =0 ; row < ntr.length; ++row)
for(int column =0; column<ntr[row].length;++column)
System.out.print(ntr[row][column]);
注意如果第二維數組還沒有被創建,這可以拋出空指針異常;打印前應檢查'ntr [row]!= null'。 –
Remembe r,2D array
實際上不是2D array
。數組中的每個元素本身都是一個數組,而不一定是相同的大小。 因此,nir[0].length
可能或可能不等於nir[1].length
或nir[2]length
。
希望能幫到..:)
擴展爲多維陣列總長度,
通常對於你的情況下,由於二維陣列的形狀是「平方」。
int length = nir.length * nir[0].length;
但是,對於二維數組,每行可能不具有完全相同數量的元素。 因此我們需要遍歷每一行,添加一些元素。
int length = 0;
for (int lvl = 0; lvl < _levels.length; lvl++)
{
length += _levels[ lvl ].length;
}
如果N-D數組,這意味着我們需要N-1循環來獲取每一行的大小。
下面是如何枚舉元素中鋸齒狀二維陣列(以3行3至5列)一個完整的解決方案:
String row = "";
int[][] myArray = {{11, 12, 13}, {14, 15, 16, 17}, {18, 19, 20, 21, 22}};
for (int i=0; i<myArray.length; i++) {
row+="\n";
for (int j = 0; j<myArray[i].length; j++) {
row += myArray[i][j] + " ";
}
}
JOptionPane.showMessageDialog(null, "myArray contains:" + row);
1特別是對於危險的關於非矩形的建議(我的意思是假設你的數據是危險的,而不是使用非矩形是危險的)。這欺騙了許多新手程序員,並且讓許多本應該更加了解的非新手程序員變得愚蠢! – corsiKa
所以本質上''3' in int [] [] nir = new int [2] [3];'是虛擬的(沒有實際用途)。對???或者它用於在每行中分配3個單元格 - 默認沒有。每列中的cols? – KNU
@KNU如果你使用明確定義第二維的語法是3 ...那麼你得到每個數組的長度。我的答案的第二部分只是指出你不必使用這種語法。 –