※ ChatGPTを利用し、要約された質問です(原文:java for文だけで逆ピラミッドを作成する)
java for文で逆ピラミッドを作成する方法
このQ&Aのポイント
Javaの勉強中です。for文だけで逆ピラミッドを作成する方法を教えてください。
整数をキーボードから入力し、その数だけの段数の逆ピラミッドを表示するプログラムを作成しています。
現在のプログラムでは、星の個数が2つずつ減っていかないため、逆ピラミッドになりません。何か修正方法はありますか?
Javaの勉強中です。
for文だけで、逆ピラミッドをだしたいのですが、なかなかうまくいきません。
どなたか教えてくださいませ。
まず、整数キーボドから入力します。整数を”段”を表示すると考えて作っています。
そして、さらに、逆ピラミッド(*)を表示するのがゴールです。
私が書いたプログラムです↓
import java.io.*;
class Sample4
{
public static void main(String [] args) throws IOException
{
System.out.println("*をの数を入力ししてください");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int num = Integer.parseInt(str);
int j =0;
int i =0;
int s =0;
//行数制御
for(i=0; i<num; i++)
{
for(s=0; s<i; s++)
{
System.out.print("-");
}
for(j=0; j<num*2-1; j++)
{
System.out.print("*");
}
//改行タグ
System.out.print("\n");
}
}
}
これだと、例えば整数を”7” とした時に下のように”-”は1個ずつ減り
いい感じなのですが、”*”が2個ずつ減らないと逆ピラミッドになりません。
num -= -2;
と*が2個ずつ入れる式を入れてみたのですが、意図した結果がでず・・
数日悩んでおります。
1段目:*************
2段目:-*************
3 段目:--*************
4 段目:---*************
5 段目:----*************
6 段目:-----*************
7 段目:-------*************
お礼
回答ありがとうございました。 練習しているうちに*が1個ずつ減らす指定ができましたが。。 2個ずつ減る指定がわかりませんでした。 OKWAVEも投稿になれておらず・・・追記がわからないのでいったん質問をとじて 新しい記述をあげようと思います。 お時間ありましたら、ご教授くださいませ。
補足
k_kotaさん。早々の回答ありがとうございます。 もうちょっと聞いてよいでしょうか。 ちょっと説明がヘタで通じないかもしれませんが。。 jは*の数を出す式ですが、sum=7を入力して7段後に*が1つになっているには 最初の段で13個の*が必要になりますよね。 なので、num*2-1 という式を j>num*2-1 の間続けるという考えで式をつくってみました。 私の式だと*の数は変化しません。 変化させるために、j-0でj++ なので j<X になれば良いととのことですが、 Xの意味が今ひとつわからないのです。 イメージは↓このようにだしたいのですが。。 1段目:************* 2段目:-*********** 3段目:--********* 4段目:---******* 5段目:----***** 6段目:-----*** 7段目:------* ←が1個になって終わる