Kenta-K
@Kenta-K

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Javaで数字による三角形を書くには?

Q&A

解決したいこと

Javaで数字による三角形を書きたいがうまくいかない 教えていただきたい
例)
0 ↑
0 1
0 1 2      高さの数値を指定
0 1 2 3
0 1 2 3 4     ↓

高さ1のとき   0
高さ3のとき   0 1 2
高さ6のとき   0 1 2 3 4 5
などのように変化して出力させたい

発生している問題・エラー

例)
public class NumTriangle{
public static void main(String[] args ) {
//表示数をkeyboardから入力
int lines=inputInt("表示高さの入力:");

    for(int line=0; line<lines; line++) {
        //1行ごとの表示制御
    for(int i=0; i<line+1; i++) {
            System.out.printf("%3d",i);
         }
        System.out.println();//改行のみ
    }
}

}

該当する言語名 Java

自分で試したこと

参考ホームページ
http://nezupuro.blog.fc2.com/blog-entry-1.html
https://prgadv.com/archives/2826
参考文献
・Javaで入門 はじめてのプログラミング 基礎からオブジェクト指向まで(第1版),
飯塚泰樹ほか,森北出版(2019年)
・やさしいJava(第7版),
高橋麻奈,SB Creative(2019年)

0

1Answer

質問の例について矢印等があってよく分かりづらいのですが、0~Nまで下記のように段々に表示したいということでしょうか?

例)N=10の時

0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
0 1 2 3 4 5
0 1 2 3 4 5 6
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 9

次のように実装してみましたがいかがでしょうか?

import java.util.Scanner;
import java.util.stream.IntStream;
import java.util.stream.Collectors;

public class NumTriangle {
    public static void main(String[] args) {
        System.out.print("表示高さの入力:");
        var scanner = new Scanner(System.in);
        var num =scanner.nextInt();
        IntStream.range(0,num).forEach(n -> System.out.println(IntStream.rangeClosed(0,n).mapToObj(Integer::toString).collect(Collectors.joining(" "))));
    }
}
0Like

Comments

  1. @Kenta-K

    Questioner

    ありがとうございます
    さっそくコードを書いて動作確認してみます
  2. 動作的には変更ありませんが、rangeに関する記述を微修正しました。
    (最初のrangeとrangeClosedの位置を変更、このほうが動作の実態にあっているため)
  3. @Kenta-K

    Questioner

    動作確認うまくいきました
    ほんとにありがとうございます

Your answer might help someone💌