无法使用2维数组制作等边三角形

时间:2013-11-04 13:32:06

标签: java arrays multidimensional-array

我正准备面试。 我必须使用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   

此类所需的输出

enter image description here

3 个答案:

答案 0 :(得分:0)

我认为特殊条件(硬部分)不应该处于循环条件中,而是处于嵌套循环内的新条件中。

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

  2. 在循环内部,添加if()语句以检查是要显示值还是仅显示空格。这是你应该做的工作。

  3. 代码应如下所示:

    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位数字)。

答案 1 :(得分:0)

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

  1. 生成所需的三角形值矩阵(称为 Pascal's triangle,等等。)

  2. 很好地显示值。

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

答案 2 :(得分:-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("");
}

这应该提供所需的输出