• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:また自分で組んでわからなくなって聞いて欲しいのです)

Java入門演習問題4-22のピラミッド作成について

このQ&Aのポイント
  • Javaの入門演習問題4-22において、ピラミッドの作成方法について質問があります。具体的には、なぜ10個もの'*'が表示されるのか理解できないとのことです。
  • 質問者は、自分で試行錯誤しながらピラミッドを作成しましたが、なぜ10個もの'*'が表示されるのか理解できずに困っています。
  • 質問者は、Javaの入門演習問題4-22のピラミッド作成で、'*'が10個も表示される理由についてわからないと質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

入力値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(); }

skybkird
質問者

お礼

紙に書いて計算した主さんが言ってることがすっきりしました。 有難うございました

その他の回答 (2)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

> 出力先は内側ループですが結果的には外側ループを > iのループを数えて出力しているってことですか? 意味不明。ANo.1,ANo.2で回答したとおり, 外側のiのfor文は5回ループしている。 その各回において,内側は「4回」「3回」「2回」「1回」「0回」ループしている。 外側のiのループを数えて出力するだけなら"*"は5つになるのではないですか。

skybkird
質問者

お礼

そのとおりですねすみません。 こちらの理解不足でした

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

ANo.1を訂正します。あわてていて間違えました。 外側ループでi=5のとき,j<n-i+1は j<1なので,内側は0回ループ。 外側ループでi=6になれば,外側条件i<=nが偽となり,ループ終了。 質問文のソースコードでは改行せず"*"を並べているので, 4回+3回+2回+1回+0回 =計10個の"*"が横に並ぶ。 よって,外側はn回ループしていますが,描かれる三角形はn-1段です。

skybkird
質問者

お礼

つまりは出力先は内側ループですが結果的には外側ループをiのループを数えて出力しているってことですか? こちらのご理解がまだかけているならご指摘お願いします。 答えは正直求めていないです。 何故なのかが知りたいのです

関連するQ&A