这是我的代码:
public static int[][] arraytriangle(int lines){
int[][] tri = new int[lines][];
int c = 1; // incremented number to use as filler
for (int i = 0; i < lines; i++){
for (int j = 0; j <= i; j++){
tri[i] = new int[i+1]; // defines number of columns
tri[i][j] = c;
System.out.print(c + " ");
c++; // increment counter
}
System.out.println(); // making new line
}
System.out.println(Arrays.deepToString(tri));
return tri;
arraytriangle(3)给出:
1
2 3
4 5 6
[[1],[0,3],[0,0,6]]
所以程序正确打印(1,2,3 ...),但是当我使用deepToString时矩阵值不正确。是什么给了什么?
答案 0 :(得分:5)
此作业
tri[i] = new int[i+1];
必须发生在外部循环内部但在内部循环之外。目前,您的内部循环会不断重新分配tri[i]
,因此只会为deepToString
分配最后一项。