2016-07-04 15 views
0

を作る:私のコードは次のようになりのJava私は現在、Javaでループのためにこのフォームをしようとしてきたアスタリスク行列

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

 for (int row = 1; row <= 10; row++) { 
     for (int star = 10; star >= 1; star--) { 
      if (star >= row) { 
       System.out.print("*"); 
      } else { 
       System.out.print(" "); 
      } 
     } 
     System.out.println(); 
    } 

出力は次のようになります:

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

私は空白が星の前に行かせるために見つけ出すように見えることはできません。私はループ条件の切り替えを試みましたが、同じ結果が得られます。 私は得られないこれらのfor-loopについて何かがあります。誰かが正しい方向に私を向けることができます:)

+0

は '{(スター<行)場合'試してみてください。 –

+1

ヒント:そのようなものは、デバッガを使用するのに本当に完璧です。さらに優れています:あなたは紙の上でそれらを実行することができます。ペンを手に入れて、コードを手動で実行してください。私はあなたがあなたの問題を理解する前に、あなたがそれを行うのに5分以上かかることはないと確信しています。 – GhostCat

+0

名前には何がありますか? 'star = 10'ではなく' int column P = 1'のために、気が狂っていたでしょう。 –

答えて

1

は、だから私はあなたのコードを解析しようとしたことを実装し、どのような私が見つけたことはある

あなたの間違い:ここ

は、私たちが見ること所望の出力とあなたの出力は出力行番号2と異なっていて、私が見つけた理由はifの条件がstar >= rowはそうrow2のためにスターのループを繰り返すことができます:

if(star >= row) //when star = 10 - condition true. * will be the output 

if(star >= row) //when star = 9 - condition true. * will be the output 

if(star >= row) //when star = 8 - condition true. * will be the output 

ので*は、この反復のためstar = 1シナリオになります偽star>=row戻っそれまでは出力されます。
row = 3と同様に、starの値が<=2にならない限り、条件は真です。だから問題は、最初に*を印刷し、の条件が*を印刷した後になることです。

考えられる解決策:

基本的にはない最後に、スタートでを印刷する必要があります。したがって、同じ条件では、印刷順序を逆にするために列の反復方法を逆にする必要があるかもしれません。ループの順序を変更すると、その作業を実行できます。 2row値のループを反復することができます:

if(star >= row) //when star = 1 - condition false. ` ` will be the output 

if(star >= row) //when star = 2 - condition true. * will be the output 

if(star >= row) //when star = 8 - condition true. * will be the output 

ので、この場合にが最初に印刷され、*、後で印刷されます。

更新されたコード:

私はあなたのコードを更新しました。 inner for loopをご覧ください。

for (int row = 1; row <= 10; row++) 
{ 
    for (int star = 1; star <= 10; star++) 
    { 
     if (star >= row) 
     { 
      System.out.print("*"); 
     } 
     else 
     { 
      System.out.print(" "); 
     } 
    } 
    System.out.println(); 
} 

・ホープ、このことができます:)

1

標準の1から10のループに内側のループを変更します。

for (int row = 1; row <= 10; row++) { 
    for (int star = 1; star <= 10; star++) { 
     if (star >= row) { 
      System.out.print("*"); 
     } else { 
      System.out.print(" "); 
     } 
    } 
    System.out.println(); 
} 
1

この

int size = 10; 
for (int row = 0; row < size; row++) 
{ 
    for (int i = 0; i < row; i++) 
    { 
     System.out.print(" "); 
    } 

    for (int i = size - row; i > 0; i--) 
    { 
     System.out.print("*"); 
    } 

    System.out.println(); 
} 
1

最初の仕事は離れて、キーボードからのステップと問題を通して考えることです試してみてください。星の条件は「現在の行>現在の列」であることが分かります。

使用

for (int row = 1; row <= 10; ++row){ 
    for (int col = 1; col <= 10; ++col){ 
     System.out.print(row >= col ? "*" : " "); 
    } 
    System.out.println(); 
} 
0
for(int i = 0 ; i < 10 ; i++){ 

     for(int j = 0 ; j < 10 ; j++){ 

      if(j >= i){ 
       System.out.print("*"); 
      }else{ 
       System.out.print(" "); 
      } 
     } 
      System.out.println(""); 

    } 
関連する問題