Java 无法使用二维数组生成等边三角形

Java 无法使用二维数组生成等边三角形,java,arrays,multidimensional-array,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");

我正在为面试做准备。 我必须使用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();

    }
}
这样的期望输出


在第二个嵌套循环中

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

for(i=0;i我认为特殊条件(硬部分)不应该在循环条件中,而是在嵌套循环中的新条件中

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

  • 在循环内部,添加一个
    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("");
    }
    
    for(int i=0;i<7;i++){
    对于(int j=0;j<7;j++){
    如果(条件){
    系统输出打印(twoD[i][j]+“”);
    }否则{
    System.out.print(“”;//请注意此处的额外空间以弥补数字
    }
    }
    System.out.println(“”);
    }
    

    编辑:你彻底改变了你的问题,现在有两个问题:

  • 你必须用帕斯卡的三角形值初始化你的矩阵


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


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

  • 生成所需的三角形值矩阵(称为 除其他外)

  • 很好地显示这些值


  • 每个问题本身都很简单。请尝试解决它们,如果需要帮助,请回来。

    您能更好地解释一下预期的输出应该是什么吗?@plz等等,我正在准备输出…@KevinDiTraglia我更新了预期的输出要做一个缩进行,只需在开始数字之前添加空格。a的其他部分是什么你被搞糊涂了吗?@alexis先生我更新了期望输出,我必须实现什么逻辑才能自己解决这个问题先生我用期望输出更新了我的问题,请看一看并推荐me@Danny我看到了您的预期输出,这就是我编写这段代码的原因。您必须正确调整条件才能使其
    为真
    i
    j
    指的是三角形中的某个位置,否则为假。我没有做-投票。我更新了我的问题,你能帮我给出一个逻辑吗?我需要快速学习。哦,好吧,你改变了你想要的输出,那就不一样了……让我认为你现在发布的输出不是控制台输出,你是i’我必须选择空格的位置,以及如何处理两位数。最简单的方法是让每个单元格都有两个字符(一个空格和一个数字,或者两个数字)。请看我在您问题下方的评论。先生,我用所需的输出更新了我的问题,请看一看并推荐我
    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("");
    }
    
    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("");
    }