我试图创建像这样的弗洛伊德三角形。
1
2 3
4 5 6
7 8 9 10
但是在练习时,我使用此代码输入错误并创建了另一个三角形,
class Main {
public static void main(String[] args) {
int value=1;
int[][] arr = new int[4][4];
for(int i=0;i<4;i++){
for(int j=0;j<4;j++) {
if( i<=j ){
System.out.print(value+" ");
value++;
}
}System.out.println();
}
}
}
并打印了此内容,
1 2 3 4
5 6 7
8 9
10
现在我的问题是,在阅读数组时,我读到特定位置的特定值会被打印出来。
因此,如果这是真的,那么此代码的输出应类似于
[1][2][3][4]
[x][5][6][7]
[x][x][8][9]
[x][x][x][10]
数组在显示结果时是否跳过这些空字段? 请帮助了解这一点
答案 0 :(得分:0)
不,这些值不会被数组跳过。
它们被跳过是因为您编写了如下代码来跳过它们:
if( i<=j ){
System.out.print(value+" ");
value++;
}
如果删除条件,将打印所有16个值。
答案 1 :(得分:0)
恐怕情况有误。应该是相反的:
if( j <= i ){
System.out.print(value+" ");
value++;
}
我想如果您停止使用人工的 i s和 j 并开始使用 row 和列会更容易。
但是,请注意,在Java中,您并不是在创建二维数组,而是创建一个数组数组,该数组可以在任意维度上任意大小。
PS。无论如何,您都不会在内部循环中使用数组。
答案 2 :(得分:0)
它将以0的形式打印0,因为初始化数组时,所有值都设置为零,如果您打印它们,它们将像这样打印。这是链接
答案 3 :(得分:0)
不,正如另一个家伙所说,是if条件正在跳过。 试试这个程序-
public class MyClass {
public static void main(String args[]) {
int value=1;
int[][] arr = new int[4][4];
for(int i=0;i<4;i++){
for(int j=0;j<4;j++) {
if( i<=j ){
System.out.print(value+" ");
System.out.print("\t");
value++;
} else {
System.out.print(0);
System.out.print("\t");
}
}System.out.println();
}
}
}
此打印-
1 2 3 4
0 5 6 7
0 0 8 9
0 0 0 10
注意-程序中没有使用arr。