0

我正在为面试做准备。我必须使用 7X7 2D 数组制作一个等边三角形。

我尝试了下面的代码,但我很困惑我应该在我的代码中做什么,以便我可以制作一个等边三角形?

    package learn.basic.corejava;

public class ArrayExample {


    public void two_equilateral_D()
    {
        System.out.println("Demonstrating 2D 3X3 Equal trngle");
        int twoD[][]=new int[7][7];
        int i,j,k=0;

        for(i=0;i<7;i++)
        {
            for(j=0;j<7;j++)
            {       
                twoD[i][j]=k>9?0:k; 
                k++;
            }   
        }

        for(i=0;i<7;i++)
        {  
              for(j=i+3;j<7;j++) {
             System.out.print(twoD[i][j]+"   ");   
              }
            System.out.println("");
        }

    }  

    public static void main(String args[] )
    {
        ArrayExample obj=new ArrayExample();
        //System.out.println("Average value of the array="+obj.calculate_average());
        obj.two_equilateral_D();

    }
}

但是这段代码给了我这样的输出

Demonstrating 2D 3X3 Equal trngle
3   4   5   6   
0   0   0   
0   0   
0   

像这样的期望输出

在此处输入图像描述

4

3 回答 3

0

我认为特殊条件(困难的部分)不应该在循环条件中,而应该在嵌套循环内的新条件中。

  1. 您需要遍历整个矩阵,而不是限制嵌套循环(使用变量j)。

  2. 在循环内,添加一条if()语句来检查您是要显示值还是只显示一个空格。这种情况是你应该努力的。

代码应如下所示:

for (int i = 0; i < 7; i++) {
    for (int j = 0; j < 7; j++) {
        if (condition) {
            System.out.print(twoD[i][j]+"   ");   
        } else {
            System.out.print("    "); // note the extra space here to make up for a number
        }
    }
    System.out.println("");
}

编辑:你从根本上改变了你的问题,现在有两个问题:

  1. 您必须使用 Pascal 的三角形值初始化矩阵。

  2. 您现在发布的输出不是控制台输出,您必须选择放置空格的位置以及如何处理 2 位数字。最简单的方法是让每个单元格包含 2 个字符(一个空格和一个数字,或者 2 个数字)。

于 2013-11-04T14:03:57.430 回答
0

要解决您的问题,您应该首先将其分解为两个较小的子问题:

  1. 生成所需的值的三角矩阵( 除其他外,它被称为帕斯卡三角)。

  2. 很好地显示值。

每个问题本身都相当简单。试试你的手,如果你需要帮助,请回来。

于 2013-11-04T14:24:06.067 回答
-1

在第二个嵌套循环中

for(i=0;i<7;i++)
{  
      for(j=i+3;j<7;j++) {
     System.out.print(twoD[i][j]+"   ");   
      }
    System.out.println("");
}

您正在删除索引 3 以外的任何值,这就是为什么您只使用 4 个数字而不是 7

写入 7x7 数组后使用

int num=0;
for(i=1;i<7;i++)
{  
    num=0;
    for(j=7;j>7-i;j--) 
    {
        System.out.print(twoD[i][j]+"   ");  
        System.out.print(twoD[i][num]+"   ");
        num++;
    }
    System.out.println("");
}

这应该给出所需的输出

于 2013-11-04T13:47:54.930 回答