gpt4 book ai didi

java - 打印专栏

转载 作者:行者123 更新时间:2023-12-04 05:24:16 25 4
gpt4 key购买 nike

我在打印列时遇到问题。当代码达到“100”时,它停止读取它下面的内容,因为它是空的:

public class Column{

public static void main( String[] arg )
{

int[][] uneven =
{ { 1, 3, 100, 6, 7, 8, 9, 10},
{ 0, 2},
{ 0, 2, 4, 5},
{ 0, 2, 4, 6, 7},
{ 0, 1, 4, 5 },
{ 0, 1, 2, 3, 4, 5, 6 }};

for ( int col=0; col < uneven.length; col++ )
{
System.out.print("Col " + col + ": ");
for( int row=0; row < uneven.length; row++ )
System.out.print( uneven[row][col] + " ");
System.out.println();
}
}
}

我该怎么做才能让它继续阅读专栏?

最佳答案

要打印可变长度的二维数组,您的内部循环从 0 运行至 the current row长度:-

for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr[i].length; j++) { // Closely see inner loop

System.out.println(arr[i][j]);
}
}
arr[i]是当前行。和 arr[i].length给出该行的列数。

你可以这样推断: -
  • arr是一个二维数组。
  • 因此,您 arr 的每个元素是 1-D array .
  • 所以,arr[i]是一维数组。代表每一行。
  • 要获得每行的列数,您可以执行 arr[i].length

  • 现在,你可以在你的问题中应用同样的东西。

    实际上,您的 for loop运行错误。您的 outer loop正在运行 col = 0 to col < uneven.length ,但它应该从: - row = 0 to row < uneven.length 运行

    所以,你的 for 循环应该是这样的: -
    for ( int row=0; row < uneven.length; row++ )
    {
    System.out.print("Row " + row + ": ");

    for( int col=0; col < uneven[row].length; col++ ) {
    System.out.print( uneven[row][col] + " ");
    }
    System.out.println();
    }

    更新:-

    好的,我首先问错了你的问题。如果要打印 column wise ,您可以使用此代码:-
    int[][] uneven = 
    { { 1, 3, 100, 6, 7, 8, 9, 10},
    { 0, 2},
    { 0, 2, 4, 5},
    { 0, 2, 4, 6, 7},
    { 0, 1, 4, 5 },
    { 0, 1, 2, 3, 4, 5, 6 }};

    int max = -1;
    for ( int row = 0; row < uneven.length; row++ ) {
    if (uneven[row].length > max) {
    max = uneven[row].length;
    }
    }
    System.out.println(max);
    for (int i = 0; i < max; i++) {
    for (int j = 0; j < uneven.length; j++) {
    if (uneven[j].length <= i) {
    continue;
    }
    System.out.print(uneven[j][i] + " ");
    }
    System.out.println();
    }

    首先,您需要在每行的所有列数中找到最大值。

    然后再次运行循环,从 0 到最大列。现在,由于您对 columns 感兴趣, 现在您需要另一个 rows .这将是你的内循环。

    现在,在内部循环中,您不能只在 (j, i) 处打印数组元素。索引,因为当前行可能没有 max列数。所以,你需要输入一个 if-condition检查那个。

    关于java - 打印专栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13380280/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com