我一直想弄清楚到底发生了什么。我只是想弄清楚我在下面评论过的两条线在做什么。我发现这个程序没有声明数组的完整维度(而不是新的int [10] [5];它只是决定不通过说'new int [10] []来声明它;它就像第二个数组长度无关紧要(将其更改为1或100不会影响输出)。
int[][] tri = new int[10][]; //this lack of giving the size of the 2nd array is strange
for (int r=0; r<tri.length; r++) {
tri[r] = new int[r+1]; //I'm not sure what this line is doing really
}
for (int r=0; r<tri.length; r++) {
for (int a=0; a<tri[r].length; a++) {
System.out.print(tri[r][a]);
}
System.out.println();
}
答案 0 :(得分:8)
第一行创建一个int数组数组。创建了int数组的10个插槽。
第三行创建一个新的int数组并将其放在您最初创建的一个插槽中。新的int数组中包含r + 1个空格。
因此,位置0的int数组将为int提供1个插槽。位置1中的int数组将有一个int的插槽。整体形状将是:
[
[0],
[0,0],
[0,0,0],
...,
[0,0,0,0,0,0,0,0,0,0]
]
暗示了变量名称tri(看起来像一个三角形)
答案 1 :(得分:2)
所有new int[10][]
声明的是一个大小为10的数组,包含null
个数组。
在for
循环中,null
数组被实例化为不断增加的数组大小。
答案 2 :(得分:2)
如果将多维数组视为数组数组,则更有意义:
int [][] tri = new int[10][]; // This is an array of 10 arrays
tri[r] = new int[r+1]; // This is setting the r'th array to
// a new array of r+1 ints
答案 3 :(得分:1)
它只是声明一个包含10个数组的数组。每个“子”数组的长度都可以不同。
答案 4 :(得分:0)
它并不缺乏,它基本上没有设置特定的数量,它不是必需的,因为它可以有很多字段
和第二行
tri[r] = new int[r+1];
将所有字段设置为非空
答案 5 :(得分:0)
最好在Java中使用多维集合。
语法:
ArrayList <Object> x= new ArrayList <Object>();
下面是Java中多维集合的应用程序。
import java.util.*;
class MultidimensionalArrayList {
/*function for creating and returning 2D ArrayList*/
static List create2DArrayList()
{
/*Declaring 2D ArrayList*/
ArrayList<ArrayList<Integer> > x
= new ArrayList<ArrayList<Integer> >();
/*one space allocated for 0th row*/
x.add(new ArrayList<Integer>());
/*Adding 3 to 0th row created above x(0, 0)*/
x.get(0).add(0, 3);
/*Creating 1st row and adding values
(another way for adding values in 2D collections)*/
x.add(new ArrayList<Integer>(Arrays.asList(3, 4, 6)));
/*Add 366 to 1st row 0th column x(1, 0)*/
x.get(1).add(0, 366);
/*Add 576 to 1st row 4th column x(1, 4)*/
x.get(1).add(4, 576);
/*Adding values to 2nd row*/
x.add(2, new ArrayList<>(Arrays.asList(3, 84)));
/*Adding values to 3rd row*/
x.add(new ArrayList<Integer>(Arrays.asList(83, 6684, 776)));
/*Adding values to 4th row*/
x.add(new ArrayList<>(Arrays.asList(8)));
return x;
}
public static void main(String args[])
{
System.out.println("2D ArrayList :");
/*Printing 2D ArrayList*/
System.out.println(create2DArrayList());
}
}