2016-11-08 8 views
-3

私はASCIIアートを使ってダイヤモンドを作っています。はい、私はコードがぎこちないことを知っています。とにかく、最後の部分はelseブロック内で実行されていないため、ダイヤモンドは終了しません。 全コード: http://pastebin.com/14HnZADeこのコードブロックが実行されないのはなぜですか?

電流出力:

http://pastebin.com/YTqKrRQe

ザ・ループ用:

for(int i = 1; i<=size; i++) { 
    for(int j=1; j<=size; j++) { 
     if(j<i) { 
      System.out.print(" "); 
     } 
     else if(j==i || j>i) { 
      System.out.print("*"); 
     } else {//this block is not executing, and I do not know why. 
      for(int ki = 1; ki<=size; ki++) { // how do I fix it? 
       for(int n = size; n>=1; n--) { 
        if(j>=i) { 
         System.out.print("*"); 
        } else { 
         System.out.print(" "); 
        } 
       } 
      System.out.println(); 
      } 
     } 
    } 
    System.out.println(); 
} 
+1

これは「無料のコードをデバッグする」ではありません!あなたの質問のタイプのために特に指定された質問クローズカテゴリがあります。「なぜこのコードは動作しませんか?」 –

+0

ここにあなたのコードを投稿してください... – brso05

+0

@ brso05彼はすぐに閉じられるので、彼はする必要はありません。 –

答えて

1

あなたの条件の一つは、それがelseブロックに到達する前に満たさなければなりません:

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

jは、iより小さいか、またはiより大きいか、iに等しいかのいずれかです。あなたは、あなたが

if (j<i) { 
    //.. 
} else if (j==i || j>i) { 
    // .. 
} else { 
    // this will never happen 
} 

しかしj==i || j>ij>=iと同じですが... elseが実行されることはありませんので、

0

を可能なすべての条件を指定しています。 elseブロックは決して実行されません。なぜなら、jは常にiより小さいか、i以上であるからです。他のオプションはありません!