2012-02-12 6 views
1

コマンドライン引数nをとり、スペースとアスタリスクを交互に入れたパターンを出力するプログラムを作成する必要があります。少なくともの2つのネストされた2つのループコンストラクタを使用して、パターンを実現します(イメージは、以下のように見えます)。2つのネストされたforループとコンストラクタを使用して繰り返しパターンを出力する

これは私がすでに試したコードであり、運はありません。私は単一のforループでこれを行う方法を理解していますが、入れ子になっていません。私はまた、このプログラムとコンストラクタをどのように統合するのか不明です。

This is how the image should look: * * * * 
            * * * * 
            * * * * 
            * * * * 
public class Box { 
    public static void main(String[] args) { 

     for (int i=1; i<2; i++) { 
      System.out.println("* " + "* " + "* " + "* "); 

      for (int j=0; j<i; j++) { 
       System.out.print(" *" + " *" + " *" + " *"); 

      } 
     } 
    } 
} 
+0

コンストラクタやコマンドライン引数 'n'を使用していません。 – Jeffrey

+0

Jeffreyはコンストラクタやコマンドラインをどのように組み込むか考えています。私はちょっとこの問題では無関係だと感じます。 –

答えて

1

ボヘミアンの答えにわずかに変更。外側のfor-loopは行の印刷を担当します。内側のループは、各行の繰り返し文字を出力します。コンストラクタは単純にnフィールドを設定します。このフィールドは、印刷する行の数を制御します。 mainメソッドは新しいオブジェクトを作成し、その唯一のメソッドを呼び出します。

public class Box { 

private static int n; 

public Box(int n){ 
    this.n = n; 
} 

public static void doMagic() { 
    for (int row = 0; row < n; row++) { 
     if(row%2==1) 
      System.out.print(" "); 
     for (int col = 0; col < n; col++) { 
      System.out.print("* "); 
     } 
     System.out.println(); 
    } 
} 
    public static void main(String[] args) { 
    new Box(4).doMagic(); 
} 
} 
+0

ありがとうございました。それは、行のために1つのループを考えて、次に列のために別のループを考えるとかなり意味があります。 –

+0

doMagic()は静的である必要はありませんでした。メインのメソッドからテスト/呼び出しした後で静的修飾子を削除するのを忘れていない限り。 – TheRealChx101

2

私は、これは宿題の問題だと思いますので、私はあなたに任意のコードを与えることはありません:)ここにあなたの問題は、外側のループと内部ループの両方で行全体をプリントアウトされています。外側のループを使用して各行を描画し、内側のループを使用して各行にアスタリスクを描画します。したがって、外側のループは行のためのものであり、内側のループは列のものです。

+0

ここであなたが何を言っているのか分かります。それはもう少し意味があります。 –

0
  • ループ変数に適切な名前を付けます。
  • 種類ごとに各反復が

を何をすべきかを考えてみて、これを試してみてください:

public static void main(String[] args) { 
    for (int row = 0; row < 4; row++) { 
     // Not sure if you really meant to indent odd rows. if not, remove if block 
     if (row % 2 == 1) { 
      System.out.print(" "); 
     } 
     for (int col = 0; col < 4; col++) { 
      System.out.print("* "); 
     } 
     System.out.println(); 
    } 
} 

出力:あなたはどのように多くの行にあなたを制御することができますforループの外で

* * * * 
* * * * 
* * * * 
* * * * 
+0

私は奇数番号の行がインデントされていると考えています – mbatchkarov

+0

@reseterああ - 私は彼の書式が固定されていないコードだと思っていました – Bohemian

0

を「*」または「*」を印刷するかどうかを印刷して選択します。内側のループでは、選択した文字列を、あなたが持っている列の何度も印刷します。

関連する問題