pgkuroneru’s MEMO

プログラミングで躓いたことなどについて記録していくブログ

Javaで「*」を使って三角形などを出力してみる

プログラミングの課題で出ることがある、「*」を使って三角形を出力する問題。for文の中にfor文があるなど、考えるときによく迷ってしまいます。 ですが、練習を重ねていくうちに、最近ようやく理解することが出来ました。忘れないうちにメモ・・・。

三角形編

三角形 Part1

Part1 実行結果

triangle1

Part1 コード

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class triangle1 {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("段数:");
        int num = Integer.parseInt(br.readLine());

        for (int i = 0; i < num; i++) {
            for (int j = 0; <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

三角形 Part2

Part2 実行結果

triangle2

Part2 コード

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class triangle2 {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("段数:");
        int num = Integer.parseInt(br.readLine());

        for (int i = num; 0 < i; i--) {
            for (int j = 0; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

三角形 Part3

Part3 実行結果

triangle3

Part3 コード

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class triangle3 {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("段数:");
        int num = Integer.parseInt(br.readLine());

        int count1 = num - 1;
        int count2 = 1;
        for (int i = 0; i &lt; num; i++) {
            for (int j = count1; 0 &lt; j; j--) {
                System.out.print(" ");
            }
            for (int j = 0; j &lt; count2; j++) {
                System.out.print("*");
            }
            count1--;
            count2++;
            System.out.println();
        }
    }
}

三角形 Part4

Part4 実行結果

triangle4

Part4 コード

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class triangle4 {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("段数:");
        int num = Integer.parseInt(br.readLine());

        int count1 = 0;
        int count2 = num;
        for (int i = 0; i < num; i++) {
            for (int j = 0; j < count1; j++) {
                System.out.print(" ");
            }
            for (int j = count2; 0 < j; j--) {
                System.out.print("*");
            }
            count1++;
            count2--;
            System.out.println();
        }
    }
}

ピラミッド

ピラミッド 実行結果

pyramid1

ピラミッド コード

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class pyramid1 {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("段数:");
        int num = Integer.parseInt(br.readLine());

        int count1 = num - 1;
        int count2 = 1;
        for (int i = 0; i < num; i++) {
            for (int j = 0; j &lt; count1; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < count2; j++) {
                System.out.print("*");
            }
            count1--;
            count2 += 2;
            System.out.println();
        }
    }
}

まとめ

分かれば「ああそうか!」となることが多いのですが、毎回書き方を忘れてしまい、「*」が横に並んでしまったり、無限ループを起こしたりと、かなり手間取ります。
コードもかなり変数名の付け方がバラバラなので、ちゃんと考えて付けれるようになりたいですね。