dポイントプレゼントキャンペーン実施中!

Javaで以下のように出力したいとき、どのようにコードを書けばよいでしょうか?

0 1 2 3 4
5 6 7 8
9 10 11
12 13
14

・逆三角形
これはできたのですが
01234
0123
012
01
0

のようになってしまい、数字が順番に出せません。
それと数字の桁も揃えたいです。

何卒よろしくお願い申し上げます

質問者からの補足コメント

  • 失礼しました!下記のとおりです。

    public class kadai {
    public static void main(String[] args) {
    for(int i=0; i<5-i; i++) {
    for(int j=0; j<5-i; j++) {
    System.out.print(j) ;
    }
    System.out.println() ;
    }
    }
    }

    インデントがうまく表示されてなかったらすみません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/08/04 11:49
  • ありがとうございます!できたのですが、
    > kは現在の行の残り印字数
    こちらの意味がよく分かりません、、
    iは表示する値自体の数、
    jは値の個数という意味ですよね?
    kは行数のことでしょうか?

    意味分からない質問でしたらすみません、、

    No.4の回答に寄せられた補足コメントです。 補足日時:2021/08/04 15:11

A 回答 (4件)

何か質問者のソースコードが変ですね。


for(int i=0; i<5-i; i++) だと、iが0→1→2→3になって、
3<5-3ではないのでループを抜けます。結果
01234
0123
012
で終了します。
原型がかなり変わってしまいましたが作ってみました。
int i=0; //iは表示値
for (int j= 5; j >0; j--) {//jは1行の印字回数
for(int k= j; k >0; k--){//kは現在の行の残り印字数
System.out.print(String.format("%2d",i)+" ") ;
i++;
} System.out.println() ;
}
結果は
0 1 2 3 4
5 6 7 8
9 10 11
12 13
14
です。
String.format("%2d",i)は2桁表示にする句です。
この回答への補足あり
    • good
    • 1

桁合わせと出力方法が違うだけだと思うのでC言語だけど参考にしてみてください



for文2回の場合
#include <stdio.h>

int main() {
int k=0;
for (int i=5; i>0; i--) {
for (int j=0; j<i; j++) {
printf("%02d ", k++);
}
printf("\n");
}
return 0;
}


for文1回の場合
#include <stdio.h>

int main() {
int i, j=0, k=4;
for (i=0; i<15; i++) {
printf("%02d ", i);
if (i==j+k) {
printf("\n");
j=i+1;
k--;
}
}
return 0;
}
    • good
    • 1

public class kadai {


 public static void main(String[] args) {
 カウント宣言
  for(int i=0; i<5-i; i++) {
   for(int j=0; j<5-i; j++) {
    System.out.print(カウント) ;
    カウント++;
   }
   System.out.println() ;
  }
 }
}

要するに、カウント変数をループの外に出してリセットさせない、という風にすればいいはず。
あ、ちなみに、javaは専門外です。
    • good
    • 1

現時点で出来ているソースを記載してください。

この回答への補足あり
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!