2

私の Java クラスの演習の 1 つは、ネストされた for ループを使用してひし形を出力することです。この演習では、ネストされた for ループを使用しながら、最小限の出力を使用する必要があります。もう 1 つの規定は、各出力が単一のスペース、単一のアスタリスク、または単一の終了行ステートメントなどの 1 文字のみを出力できることです。

私はそれを終えましたが、それを行うためのより簡単な方法があるかどうか、または誰かが私のコードをクリーンアップするためのヒントを持っているかどうか疑問に思っていました. 必要以上に書いてしまったようです。どんな助けやヒントも大歓迎です。:)

最終結果は次のようになります。

これが私のコードです:

public class Diamond 
{
    public static void main(String args[])
    {
        int b = 11; // secondary asterisk loop counter
        int ac = 2; // asterisk count
        int sc = 5; // space count
        int elc = 2; // end line count
        int slc = 1; // space loop count
        int sslc = 1; // secondary space loop count


        for(int e = 1; e < elc && elc < 12;e++)
        {   
            if(elc <= 6)
            {
                for(int a = 1; a < ac; a++)
                {
                        for(;sc <= 5 && sc > 0; sc--)
                        {
                            System.out.print(" ");
                        }

                        System.out.print("*");
                }

                ac += 2;
                sc = 5 - slc;
                slc += 1;
            }

            else if (elc > 6)
            {
                ac -= 2;
                sc = 1;


                for (; b < ac ; b++)
                {

                    for(;sc <= sslc && sc > -2; sc++) 
                    {
                        System.out.print(" ");
                    }

                    System.out.print("*");
                }

                b = 1;
                sslc += 1;

            }
            if(elc != 6)
            {
                System.out.println();
            }

            elc += 1;
        }
    }
}
4

2 に答える 2

0

ひし形の 4 つのエッジを方程式 (x+y=4; xy=2... など) として書き留めてみてください。次に、グリッド内の各セルをネストされたループにして、スペースまたは星を印刷する必要があるかどうかを確認します。テストは次のようになります

if f1(x,y) or f2(x,y) or f3(x,y) or f4(x,y): print '*' else print ' '

ここで、f1、f2、f3、f4 は 4 つの対角線の方程式です。

印刷する文字数を最小限に抑える必要がある場合は、配列を使用して準備し、末尾のスペースを無視します。または、いくつかのアドホック ルールを使用します (すべての行のように、最初と最後を除いて 2 つ星のみ...)

于 2012-09-22T02:12:50.480 に答える
0
public class ASultan
{
   public static void main(String[] args) {

    int size = 9;

    for (int i = 1; i < size; i += 2) {
        for (int k = size; k >= i; k -= 2) {
            System.out.print(" ");
        }
        for (int j = 1; j <= i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }

    for (int i = 1; i <= size; i += 2) {
        for (int k = 1; k <= i; k += 2) {
            System.out.print(" ");
        }
        for (int j = size; j >= i; j--) {
            System.out.print("*");
        }
        System.out.println();
    }

  }
}
于 2014-11-30T07:34:07.287 に答える