我有以下代码用于打印二维数组。我想交替打印这个数组中的行和列。
public class TwoDimensionalArrays {
public static void main(String[] args) {
int marks[][]={{1,2,3},{4,5,6},{7,8,9}};
for(int j=0;j<marks[0].length;j++) {
for(int i=0;i<marks.length;i++) {
}
}
}
这就是我喜欢看输出的方式。
1 2 3
1 4 7
5 6
5 8
9
请帮忙。我完全迷失了:(
答案 0 :(得分:1)
关键是在嵌套for循环中设置i = j
for (int j = 0; j < marks.length; j++) {
for (int i = j; i < marks[j].length; i++) {
System.out.print(marks[j][i] + " ");
}
System.out.println();
if (j == marks.length - 1)
break;
for (int i = j; i < marks.length; i++) {
System.out.print(marks[i][j] + " ");
}
System.out.println();
}
答案 1 :(得分:0)
这是一个可以打印您需要的解决方案。请注意,您可能需要对ArrayIndexOutOfBoundsException
for(int j=0;j<marks[0].length;j++) {
System.out.println();
for(int i=0;i<marks.length;i++) {
try {
System.out.print(marks[j][i+j]);
} catch (ArrayIndexOutOfBoundsException e) {
//do nothing
}
}
System.out.println();
for(int i=0;i<marks.length;i++) {
try {
if(j < marks.length-1) {
System.out.print(marks[i + j][j]);
}
} catch (ArrayIndexOutOfBoundsException e) {
//do nothing
}
}
}
答案 2 :(得分:0)
这很有效。很多令人困惑的我和j,但它输出你想要的东西。
public static void main(String[] args)
{
int marks[][]={{1,2,3},{4,5,6},{7,8,9}};
for(int j = 0; j < marks[0].length; j++)
{
//Row across
for(int i = j; i < marks.length; i++)
{
System.out.print(marks[j][i] + " ");
}
System.out.println();
//Column down
if (j != marks[0].length - 1) //so we don't print 9 twice
{
for(int i = j; i < marks.length; i++)
{
System.out.print(marks[i][j] + " ");
}
System.out.println();
}
}
}