2017-04-21 4 views
-1

私の目標は、入力が3の場合、この出力を得ることです:ここでforループを使ってJavaでxパターンを印刷するには?

*  * 
    * * 
    * * 
    * 
    * * 
    * * 
    *  * 

は私のコードです:入力が3の場合

public static void PrintX (int number) { 
for (int i = 0; i <= (number * 2 + 1); i++) 
    { 
     for (int j = 0; j <= (number * 2 + 1); j++) 
     { 
      if (i == j) 
      { 
       System.out.print("*"); 
      } 
      else if (i + j == (number * 2 + 2)) 
      { 
       System.out.print("*"); 
      } 
      else 
      { 
       System.out.print(" "); 
      } 
     } 
     System.out.println(""); 
    } 
} 

私の出力は次のようなもので、私は、なぜそこにはわかりません上の余分な星です。

* 
*  * 
    * * 
    * * 
    * 
    * * 
    * * 
*  * 
+5

ウォーク - 基本的に、あなたは" ""*"にそれぞれの可能なインデックスをマッピングします。 i = 0、j = 0のときに何が起こるかを考慮する。 –

答えて

-2

i = 1を外側ループの内側に設定します。コンパイルし、以下の例を実行:あなたは1の初期i値を設定した場合、あなたが期待するよう

public class TestPrintX { 
     public static void PrintX (int number) { 
     for (int i = 1; i <= (number * 2 + 1); i++) 
      { 
       for (int j = 0; j <= (number * 2 + 1); j++) 
       { 
        if (i == j) 
        { 
         System.out.print("*"); 
        } 
        else if (i + j == (number * 2 + 2)) 
        { 
         System.out.print("*"); 
        } 
        else 
        { 
         System.out.print(" "); 
        } 
       } 
       System.out.println(""); 
      } 
     } 
     public static void main(String arg[]) { 
      PrintX(3); 
     } // end of main method 
} // end of class 
+4

何が間違っていたのか、何が変更されたのかを説明しますか? – csmckelvey

+0

ありがとうございます。 int i = 0の代わりにint i = 1 – Deryck

+0

@mo sean、OPを受け入れるよう強要しないでください。ここには 'should'はありません。 –

1

あなたの外側のループが働くだろう。しかし、これを少し短くすることもできます。まず、number * 2 + 1を保存することを検討してください。次に、いくつかのラムダ式をIntStreamと組み合わせることができます。手やデバッガによってコードを通じてので

public static void PrintX(int number) { 
    int len = number * 2 + 1; 
    IntStream.rangeClosed(1, len).forEachOrdered(i -> { 
     IntStream.rangeClosed(0, len) 
       .mapToObj(j -> i == j || i + j == len + 1 ? "*" : " ") 
       .forEachOrdered(System.out::print); 
     System.out.println(); 
    }); 
} 
関連する問題