Java for文、if文を使っての三角形の作成方法

このQ&Aのポイント
  • Javaでfor文とif文を使って三角形を作成する方法を教えてください。
  • 要件としては、1行目には1つの数字、2行目には2つの数字、3行目には3つの数字、...というように増えていく三角形のプログラムを作成したいです。
  • 具体的な方法や条件式がわからないので教えていただけると助かります。
回答を見る
  • ベストアンサー

java for文、if文を使っての三角形

例:1 23 456 78910 ・・・・・・のようにひょうじさせるプログラムを作成するのに、for文とIf文を使っての三角形を   作成したいのですが、If文の条件式が分からないのとどうしたら、上記のようなプログラムが   出来るのか教えてください。お願いします。 public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ // 行に表示させる個数を表現するための変数がないため今回、新たに変数を用意する。 int a = 1; //行の終わりを改行して1増やすための変数がないため今回、新たに変数を用意する。 int b = 1; // 1~100までの数字を用意する。 for (int i = 1; i <= 100; i++) { //変数iをSystem.out.printを使って変数iをコンソールの中に出力させる。 System.out.print(i); //System.out.println("")を使って改行する。 System.out.println(" "); //変数iに1増加して数字を順番にする。 i++; if(a <= i){ System.out.print(a);

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

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.4

public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ // 行に表示させる個数を表現するための変数がないため今回、新たに変数を用意する。 int a = 1; //行の終わりを改行して1増やすための変数がないため今回、新たに変数を用意する。 int b = 0; // 1~10までの数字を用意する。 for (int i = 1; i <= 10; i++) { //変数iをSystem.out.printを使って変数iをコンソールの中に出力させる。 System.out.print(i); b++; if(b>=a){ //System.out.println("")を使って改行する。 System.out.println(" "); b=0; a++; } } // 93~105までの数字を用意する。 for (int i = 93; i <= 105; i++) { //変数iをSystem.out.printを使って変数iをコンソールの中に出力させる。 System.out.print(i); }

その他の回答 (4)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

まず、元のプログラム(らしきもの)について。 > //変数iに1増加して数字を順番にする。 > i++; とありますが、for (i=~ の中で i を変化させると、ループ回数が変化します。 この場合は i=1で開始 ↓ System.out.print(i); で 1を出力 ↓ 上記のi ++ で i==2に ↓ forループの終りで、 for (int i = 1; i <= 100; i++) の3つ目の式 i ++ により、 i==3 に。 for (int i = 1; i <= 100; i++) の2つ目の式で、 3 < 100 となり、forへ戻ってループ続行 ↓ System.out.print(i); で 3を出力 ... となります。 意図的にループ制御用変数を変化させる高等テクニックもありますが、通常は、ループ制御変数は参照するに留めておきます。 > If文の条件式が分からない これを、あなた自身が紙に鉛筆で書くならば、どこで改行しますか? その説明を日本語で(英語のネイティブスピーカーなら英語で、その他、あなたが普段普通に使っている言語で)説明してください。 それが、 if に書く条件です。 ただ、 コンピュータは日本語(英語などなど)を理解してくれません。 そこで、Java等のプログラミング言語に翻訳してコンピュータに教えるのです。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.3

>for文をもう一つ追加して、2の次の数字が改行にならないでひょうじさせるにはどうしたらいいですか? ん?意味がわかりません。

s_yonezawa
質問者

補足

for文(多重ループ)を使って出力結果を以下のように表示させるためにどうしたらいいのか。教えてください。 1 23 456 78910 93949596979899100101102103104105

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.2

こんなところですかね。 public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ // 行に表示させる個数を表現するための変数がないため今回、新たに変数を用意する。 int a = 1; //行の終わりを改行して1増やすための変数がないため今回、新たに変数を用意する。 int b = 0;//行にすでに表示した個数を数えるための変数とする。 // 1~100までの数字を用意する。 for (int i = 1; i <= 100; i++) { //変数iをSystem.out.printを使って変数iをコンソールの中に出力させる。 System.out.print(i); b++;//表示した数を数える //行に表示した数=行に表示する数になったら if(b>=a){ //System.out.println("")を使って改行する。 System.out.println(" "); b=0;//行に表示した数をリセット a++;//次の行は1つ多く表示する } } }

s_yonezawa
質問者

お礼

分かりました。有難うございます。

s_yonezawa
質問者

補足

for文をもう一つ追加して、2の次の数字が改行にならないでひょうじさせるにはどうしたらいいですか?

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

1 23 456 まではいいとして… 1 23 456 78910 と出力した時点で、いちばん下の行が1文字分だけ長くなっていて、 三角形になりません。それはいいんですか?

s_yonezawa
質問者

補足

1文字だけ長くなって三角形にならないのは問題ありません。階段状に表示させられれば問題ありません。

関連するQ&A

  • JAVAのfor文で困っています。

    JAVAの勉強をしていますが、本の練習問題でわからなくて困っています。for文で以下の処理を行いたいです(do,whileはなしです)が、 *を5個ごとに改行したいのですが、改行してくれません。 問題の部分↓ if (n % 5 == 0) System.out.println(); 何か良い方法はありませんか?お願いします。 ------------------------------------------------- //(数を読み込んで)だ個数だけ * を5個ごと改行しながら表示 int n = 0; for (int i = n; n <= 0;){ System.out.print("何個*を表示しますか : "); n = stdIn.nextInt(); } for (int i = 1; i <= n; i++){ System.out.print("*"); if (n % 5 == 0) System.out.println(); } ------------------------------------------------

    • ベストアンサー
    • Java
  • Java for文

    for文について、キーボードで入力して、その数が素数(1またはその数以外で割り切れない数)であるかを判断するコードですが、for文とif文の関係が良くわかりません。ご教示ください。 <サンプル> public static void main(String[] args) throws IOException{ System.out.println("2以上の整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); ※1 for(int i=2; i<=num; i++){ if(i == num){ System.out.println(num + "は素数です。"); ※2 }else if(num % i == 0){ System.out.println(num + "は素数ではありません。"); break; ※1と※2の処理について初心者でもわかるような解説をおねがいできますでしょうか? よろしくお願いいたします。

  • Java for文 だけで逆ピラミッドを作る

    教えてください。 for 文だけで逆ピラミッドを作りたいのですが、*の数が2個ずつ減ればピラミッド 作成なのですが、私の文だと*は1個ずつしか減りません。 2個の指定はどのうように記述すればよいでしょうか? *を3と指定した場合 ***** (5) -***   (3) --*     (1) と表示したいのですが、下の文だと ***** (5) -****  (4) --***   (3) となってしまいます。 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=num*2-1; j>i; j--) { System.out.print("*"); //System.out.print("d"); } //改行タグ System.out.print("\n"); } } }

  • java ネストしたfor文について

    ***** **** *** ** * 上のように*が減るようにしたいのですが下のソースではどこが悪いか教えてください class TestGoo{ public static void main(String args[]){ for(int i = 5; i>=1; i--){ for(int j = 5;j>=1; j--){ System.out.print('*'); } System.out.println(); } } }

  • Java eclipse for文の乱数

    for文で10までの乱数を5個表示し、6以上の場合は数値と一緒にあたりと表示せよという問題で int a; for(a=0;a<=10;a++){ a=(int)(Math.random()*10); System.out.println(a); if(a>=6){ System.out.println(a+" あたり"); } } で結果が 6 あたり 4 3 5 7 7 あたり 0 ・・・ のようになり、無限に続くし、6以上なのにあたりが付かない時があります。 どなたか教えていただけないでしょうか?

  • for文&if文を使った問題について教えてください。

    参考書の練習問題を解いていて、応用力がないのか理解できない ので、分かる方教えていただけませんか? 問題: キーボードから整数を入力させ、その数が素数であるかどうかを 判断するコードを記述してください。 解答: import java.io.*; class SampleP5 { public static void main(String[] args) throws IOException { System.out.println("2以上の整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); for(int i=2; i<=num; i++){ if(i = = num){ System.out.println(num + "は素数です。"); } else if(num % i = = 0){ System.out.println(num + "は素数ではありません。"); break; } } } } 例えば"7"を入力すると「7は素数です」と出力されるようなんですが、 『i = 7』だとして、『 if(i = = num)』の条件って当てはまるん ですか?for文でiの初期値が2だから、『2 = = 7』で当てはまらない と思うんですが・・・ 考え方が間違っているんですかね? ※ちなみに(= =)のところ、実際はスペース空いてません。  ここの画面での表示上くっついて1本の線になってしまうので、  スペースを空けて入力したまでです。

    • ベストアンサー
    • Java
  • javaのfor文

    nの値の和を求めるのはこれ以外に書き方はありますか? import java.util.*; class SampleGoo{ public static void main(String args[]){ Scanner std = new Scanner(System.in); System.out.print("整数値:");int n = std.nextInt(); int ans = 0; for (int i = 1;i <= n;i++){ ans = ans + i; } System.out.println(Integer.toString(ans)); } }

  • javaのfor文

    nの値の和を求めるのはこれ以外に書き方はありますか? import java.util.*; class SampleGoo{ public static void main(String args[]){ Scanner std = new Scanner(System.in); System.out.print(\"整数値:\");int n = std.nextInt(); int ans = 0; for (int i = 1;i <= n;i++){ ans = ans + i; } System.out.println(Integer.toString(ans)); } }

  • java while文です。教えてください(__)

    public class mondai2{ //プログラム開始 public static void main(String args[]){ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int i; int ans=0; int seikai=0; for(i=0;i<5;i++){ try{ { Random ran = new Random(); int num1 = ran.nextInt(8)+1; int num2 = ran.nextInt(8)+1; ans = num1*num2; System.out.print("問題"+(i+1)+":"); System.out.print(num1 + "×" +num2 + "="); String s =in.readLine(); seikai = Integer.parseInt(s); if(seikai==ans){ System.out.println("正解"); }else{ System.out.println("不正解"); } } }catch(IOException e){ System.out.println("エラー"); } } } } このプログラムをwhile文か、do while文にして正解が出るまで問題が出続けるようにしたいんですけど、まったくわからなくて困っています>< 教えてください(+o+)

    • ベストアンサー
    • Java
  • for文について

    for文を使って、以下のような図形を作成してますが、 どうしてもうまく作れません。 どなたか教えていただけないでしょうか? 現在出来ているソースは次のようです。 まるで異なる図形になってしまいますが。 public class kurikaeshi { public static void main(String[] args) { int i = 0, j = 0, k = 0, l=0; for(i = 0; i < 10; i++) { for(j = 0; j < i + 1; j++) { for(k = 0; k < 2*j; k++) { System.out.print(" "); } for(l = 0; l < (2*i + 1) - 2*k; l++) { System.out.print("*"); } System.out.println(); } } } } + +++ + +++++ +++ + +++++++ +++++ +++ + +++++++++ +++++++ +++++ +++ + +++++++++++ +++++++++ +++++++ +++++ +++ +