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("");
}

編集:質問を根本的に変更しましたが、現在2つの問題があります:

  1. パスカルの三角形の値で行列を初期化する必要があります。

  2. 投稿した出力はコンソール出力ではありません。スペースをどこに入れるか、および 2 桁の数字をどのように処理するかを選択する必要があります。最も簡単な方法は、すべてのセルを 2 文字 (スペースと数字、または 2 桁) にすることです。

于 2013-11-04T14:03:57.430 に答える
0

問題にアプローチするには、まず問題を 2 つの小さなサブ問題に分割する必要があります。

  1. 目的の値の三角行列を生成します (パスカルの三角形などと呼ばれます )。

  2. 値をきれいに表示します。

それぞれの問題は、それ自体はかなり単純です。手を試して、助けが必要な場合は戻ってきてください。

于 2013-11-04T14:24:06.067 に答える
-1

2 番目のネストされたループで

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

インデックス 3 を超える値を削除しているため、7 ではなく 4 つの数値のみになります。

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 に答える