繁体   English   中英

在2D阵列中打印行和列?

[英]Printing rows and columns in a 2D Array?

我在打印2d数组时遇到问题...我的最终目标是输出看起来像这样的输出:

0   0   0   0   0   
0   0   0   0   0   
0   0   0   0   0   
0   0   0   0   0   

19  36  45  44  47  
64  48  47  74  99  
55  7   48  12  21  
78  19  95  61  11

第一组数字可以很好地打印出来,但是尝试将第二组数字与它一起打印后,我仍然收到错误消息。 我应该更改我的代码吗?

/*
 * To change this license header, choose License Headers in Project
 Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 package array2d;

/**
*
 * @author stevebrowning
 */
public class Array2d 
{

public static void main(String[] args)
{
         int [][] array2d = new int [4][5];

         array2d [0][0] = 0;
         array2d [0][1] = 0;
         array2d [0][2] = 0;
         array2d [0][3] = 0;
         array2d [0][4] = 0;

         array2d [1][0] = 0;
         array2d [1][1] = 0;
         array2d [1][2] = 0;
         array2d [1][3] = 0;
         array2d [1][4] = 0;

         array2d [2][0] = 0;
         array2d [2][1] = 0;
         array2d [2][2] = 0;
         array2d [2][3] = 0;
         array2d [2][4] = 0;

         array2d [3][0] = 0;
         array2d [3][1] = 0;
         array2d [3][2] = 0;
         array2d [3][3] = 0;
         array2d [3][4] = 0;

         int rows = 4;
         int columns = 5;
         int m, n;

         for ( m = 0; m < rows; m++) {
             for ( n = 0; n < columns; n++) {
                 System.out.print( array2d[m][n] + " ");
             }
             System.out.println( "")
             }
         }
          int [][] array2d = new int [][] {{19, 36, 45, 44, 47},
                                           {64, 48, 47, 74, 99},
                                           {55, 7, 48, 12, 21},
                                           {78, 19, 95, 61, 11}};
          for ( int i = 0; i < array2d.length; i++ )
            System.out.println( array2d[i] );
             }

在第一个示例中,您有两个循环。 一个用于行,一个用于列。

在第二个示例中,只有一个循环。

当您做不同的事情时,为什么还要期待同样的事情发生?

您看,关于编程的事情是:细节很重要。 您无需写下一些代码 ,而是要仔细考虑并写下所需的代码。

最后:您不应该对数组的维进行硬编码-从这个意义上讲,您的第二个循环更好,因为它使用array.length而不是手动分配的值。

您为什么不像第一个那样打印第二个?

 for ( i = 0; i < rows; i++) {
             for ( j = 0; j < columns; j++) {
                 System.out.print( array2d[i][j] + " ");
             }
             System.out.println();//no need for quotes in a line break

             }
         }

如果初始化数组中的任何元素,则数组中的所有元素都将初始化为零。 因此,无需对以上代码进行循环。

   int array2d[][]=new int[4][4];

            array2d[0][0]=0;

            //to display the array2d
            for(int x[]:array2d){
                for(int y:x)
                         System.out.print(y+" ");
                System.out.println();
            }

替换上面的代码。

array2d = new int [][] {{19, 36, 45, 44, 47},
                        {64, 48, 47, 74, 99},
                        {55, 7, 48, 12, 21},
                        {78, 19, 95, 61, 11}};
for(int x[]:array2d){
                    for(int y:x)
                             System.out.print(y+" ");
                    System.out.println();
                }

您的第一个程序块工作正常,这意味着您需要遵循相同的步骤来执行下一个程序块。
替换如下所示的for循环:

for (m = 0; m < array2d.length; m++) {
    for (n = 0; n < array2d[m].length; n++) {
        System.out.print( array2d[m][n] + " ");
     }
     System.out.println( "");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM