3つの方法で書いてみました。
ただし文字は半角の * にしています。
すこしの変更で全角文字 ■ に変更できると思います。
java
1public class Triangle {
2 // 改行コード
3 static private String line_sep = System.getProperty("line.separator");
4
5 public static void main(String[] args) {
6 sub1();
7 sub2();
8
9 String triangle = sub3(5);
10 System.out.print(triangle);
11 }
12
13 // 一文字ずつ print する
14 static void sub1() {
15 final String mark = "*";
16 final String space = " ";
17 for (int i = 1; i <= 5; i++) {
18 for (int j = i; j <= 5; j++) {
19 System.out.print(space);
20 }
21 for (int j = 1; j <= i; j++) {
22 System.out.print(mark);
23 }
24 System.out.println();
25 }
26 }
27
28 // printf の書式指定を使う。
29 static void sub2() {
30 final String mark = "*";
31 for (int i = 1; i <= 5; i++) {
32 String str = "";
33 for (int j = 1; j <= i; j++) {
34 str += mark;
35 }
36 System.out.printf("%5s%n", str);
37 }
38 }
39
40 // String の組み立てかたを工夫する。
41 static String sub3(final int height) {
42 final String str = "*";
43 final String space = " ";
44 StringBuilder buf = new StringBuilder();
45 for (int i = 1; i <= height; i++) {
46 String head = new String(new char[height - i]).replace("\0", space);
47 String tail = new String(new char[i]).replace("\0", str);
48 buf.append(head).append(tail).append(line_sep);
49 }
50 return buf.toString();
51 }
52}
実行結果:
*
**
***
****
*****
*
**
***
****
*****
*
**
***
****
*****
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。