- ベストアンサー
Java入門演習問題4-22のピラミッド作成について
- Javaの入門演習問題4-22において、ピラミッドの作成方法について質問があります。具体的には、なぜ10個もの'*'が表示されるのか理解できないとのことです。
- 質問者は、自分で試行錯誤しながらピラミッドを作成しましたが、なぜ10個もの'*'が表示されるのか理解できずに困っています。
- 質問者は、Javaの入門演習問題4-22のピラミッド作成で、'*'が10個も表示される理由についてわからないと質問しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
入力値n=5とする。 外側ループでi=1のとき,j<n-i+1は j<5なので,内側はj=1,2,3,4と4回ループ。 外側ループでi=2のとき,j<n-i+1は j<4なので,内側はj=1,2,3と3回ループ。 外側ループでi=3のとき,j<n-i+1は j<3なので,内側はj=1,2と2回ループ。 外側ループでi=4のとき,j<n-i+1は j<2なので,内側はj=1と1回ループ。 外側ループでi=5になれば,外側条件i<=nが偽となり,ループ終了。 質問文のソースコードでは改行せず"*"を並べているので, 4回+3回+2回+1回 =計10個の"*"が横に並ぶ。 次のように適切なタイミングで改行すれば三角形が描けます。 ただこのままではn段ではなく,n-1段ですけれど。 for(int i=1; i<=n; i++){ for(int j=1; j<n-i+1; j++){ System.out.print("*"); } System.out.println(); }
その他の回答 (2)
- jjon-com
- ベストアンサー率61% (1599/2592)
> 出力先は内側ループですが結果的には外側ループを > iのループを数えて出力しているってことですか? 意味不明。ANo.1,ANo.2で回答したとおり, 外側のiのfor文は5回ループしている。 その各回において,内側は「4回」「3回」「2回」「1回」「0回」ループしている。 外側のiのループを数えて出力するだけなら"*"は5つになるのではないですか。
お礼
そのとおりですねすみません。 こちらの理解不足でした
- jjon-com
- ベストアンサー率61% (1599/2592)
ANo.1を訂正します。あわてていて間違えました。 外側ループでi=5のとき,j<n-i+1は j<1なので,内側は0回ループ。 外側ループでi=6になれば,外側条件i<=nが偽となり,ループ終了。 質問文のソースコードでは改行せず"*"を並べているので, 4回+3回+2回+1回+0回 =計10個の"*"が横に並ぶ。 よって,外側はn回ループしていますが,描かれる三角形はn-1段です。
お礼
つまりは出力先は内側ループですが結果的には外側ループをiのループを数えて出力しているってことですか? こちらのご理解がまだかけているならご指摘お願いします。 答えは正直求めていないです。 何故なのかが知りたいのです
お礼
紙に書いて計算した主さんが言ってることがすっきりしました。 有難うございました