Java 我试图打印出二维数组的右下三角形
我试图打印二维数组的右下角三角形,但我得到了相反的元素三角形:Java 我试图打印出二维数组的右下三角形,java,arrays,Java,Arrays,我试图打印二维数组的右下角三角形,但我得到了相反的元素三角形: int[][] a3 = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}, }; System.out.println("Lower right triangle"); for (int row = 0 ; row < a3.length ; row++
int[][] a3 = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
};
System.out.println("Lower right triangle");
for (int row = 0 ; row < a3.length ; row++){
for (int col = 3 ; col >= a3[0].length-row-1 ; col--) {
System.out.print("\t" + a3[row][col]);
}
System.out.println();
}
而不是:
4
7 8
10 11 12
13 14 15 16
这是给你的解决办法。。试着理解逻辑并询问是否有任何疑问。希望对你有帮助
for (int row = 0 ; row < a3.length ; row++){
for (int col = 0 ; col < a3[0].length ; col++) {
if(col>=a3[0].length-1-row){
System.out.print(a3[row][col]+"\t");
} else {
System.out.print("\t");
}
}
System.out.println();
}
for(int row=0;row=a3[0]。长度为1行){
系统输出打印(a3[行][列]+“\t”);
}否则{
系统输出打印(“\t”);
}
}
System.out.println();
}
未给出完整的答案,请考虑以下几点…在您的解决方案中,您是从右向左工作的。为了最好地解决这个问题,您应该从左向右打印(这是遍历的顺序)。为此,您同样需要利用行和列索引来确定打印顺序:
if(((a3[0].length - 1) - row) <= col) {
System.out.print(a3[row][col] + "\t");
} else {
System.out.print("\t");
}
if(((a3[0].长度-1)-行)这里是另一种打印方式。您可以保留一个标志来检查您是否已缩进为一行打印的第一个数字。此缩进将取决于您开始打印的列。然后,所有打印的数字都将在其后面追加一个缩进
初始缩进发生的次数基于col
,计算为a3[0]。长度-行-1
for (int row = 0; row < a3.length; row++) {
boolean formatted = false;
for (int col = a3[0].length - row - 1; col <= 3; col++) {
if (!formatted) {
for (int i = 0; i <= col; i++) {
System.out.print("\t");
formatted = true;
}
}
System.out.print(a3[row][col] + (col < 3?"\t":""));
}
System.out.println();
}
}
要直观地查看缩进是如何应用的,请使用X
代替\t
。这是输出。希望这有助于理解初始缩进是如何应用的,然后是后续缩进
XXXX4
XXX7X8
XX10X11X12
X13X14X15X16
您是如何尝试修复它的?您是如何尝试修复它的?它显示上面的方式的原因是,您可能没有让它用空格打印出来,而是从[0][0]开始,而不是从[][array[0]。length-1]你真的认为给他家庭作业的答案对他有帮助吗?我希望他能理解其中的逻辑并澄清其中的疑问逻辑是不言自明的
if(((a3[0].length - 1) - row) <= col) {
System.out.print(a3[row][col] + "\t");
} else {
System.out.print("\t");
}
for (int row = 0; row < a3.length; row++) {
boolean formatted = false;
for (int col = a3[0].length - row - 1; col <= 3; col++) {
if (!formatted) {
for (int i = 0; i <= col; i++) {
System.out.print("\t");
formatted = true;
}
}
System.out.print(a3[row][col] + (col < 3?"\t":""));
}
System.out.println();
}
}
4
7 8
10 11 12
13 14 15 16
XXXX4
XXX7X8
XX10X11X12
X13X14X15X16