3

宿題のために、次のパターンを印刷するためのコードを一般化するのに助けが必要です。

   A
  B C  
 D E F 
G H I J

問題は、アルファベット間のスペースのコーディングでした。
これは私が思いついたものですが、パターンの最初の 4 行だけです。
(書式設定が下手ですみません>.>)

int r = 65;
char m ;
int count=0;
for(int i = 4;i>0;i--)
{
    for( int j = i;j>0;j--)
        {System.out.print(" ");}
    for(int j = 4-i;j>=0;j--)
        {
             count++;
             m=(char)r;
             if(count == 3||count == 6||count == 8 || count == 11|| count == 13|| count ==15)
             {
                 System.out.print(" ");r--; 

             }
                 else
                     System.out.print(m);r++;
        }
    for(int j = 4-i;j>0;j--)
        {
            count++;m=(char)r;
            if(count == 3||count == 6||count == 8 || count == 11|| count == 13|| count ==15)
            {
                System.out.print(" ");r--;
            }
                    else
                        System.out.print(m);r++;
        }                                                                               
            System.out.println("");
} 

説明してくれたGeneのおかげで、私はいくつかの編集を行い、これが私が思いついたものです.

            int r = 65;
char m ;
for(int i = 4;i>0;i--)
    {
        for( int j = i;j>0;j--)
            {System.out.print(" ");}
        for(int j = 4-i;j>=0;j--)
    {
         m=(char)r;

            System.out.print(m+" ");
            r++;
    }
            System.out.println("");
    }
4

2 に答える 2

1

ループを記述するということは、数学 (通常は単純な数学) を使用して、ループ インデックスの観点から 1 つの反復を記述することです。

N数をi=0,1,...N-1そのインデックスとします。

まず、あなたの例は、行iN-i-1先頭にスペースがあることを示しています。これを確認しましょう。rowi=N-1の場合は 0 を取得し、 の場合i=0は を取得しN-1ます。あなたの例ではi=0ケースは 3 です。これは図面と一致しているため、見栄えがよくなります。

2 番目の部分は、i+1行ごとに文字があることです。最後を除くすべてに、次のスペースがあります。最後には次の改行があります。

最後に、A から始めて、新しい文字を印刷するたびにインクリメントするだけで、正しい文字を取得できます。

これでコードを書く準備が整いました:

char ltr = 'A';
for (int i = 0; i < N; i++) {

  // Print the leading spaces.
  int nLeadingSpaces = N - i - 1;
  for (int j = 0; j < nLeadingSpaces; j++) 
    System.out.print(' ');

  // Print the letters for this row.  There are
  // i+1 of them. So print the first i with a following
  // space and the last one with a newline.
  for (int j = 0; j < i; j++) 
    System.out.print(ltr++ + " ");
  System.out.println(ltr++);
}

これはテストされていませんが、動作するはずです。

于 2012-07-15T15:03:28.957 に答える
-1

2 つの (ネストされた) ループが必要です。

行番号の外側。

ラインポジションのインナー。

現在の文字のループ外で定義された変数が必要です。

内側のループの開始時に、最大行 - 現在の行番号 * const に従って空のスペースを書き込みます (const は自分で調べてください)。

内側のループでは、現在の文字とスペースを出力します。

内側のループの最後で、出力文字を増やします。

外側のループの最後で、次の行に進みます。

于 2012-07-15T15:01:53.010 に答える