実践:基礎

このレッスンはPhase 1のハンズオン実践で、4つのプロジェクトを通じて学んだことを定着させます。

プロジェクト1:九九の表

使用スキル:forループ、ネストされたループ、フォーマット出力。

要件

完全な九九の表(1-9)を表示します。

実装

JAVA
public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.printf("%d×%d=%-4d", j, i, i * j);
            }
            System.out.println();
        }
    }
}

出力

TEXT
1×1=1
1×2=2   2×2=4
1×3=3   2×3=6   3×3=9
1×4=4   2×4=8   3×4=12  4×4=16
1×5=5   2×5=10  3×5=15  4×5=20  5×5=25
1×6=6   2×6=12  3×6=18  4×6=24  5×6=30  6×6=36
1×7=7   2×7=14  3×7=21  4×7=28  5×7=35  6×7=42  7×7=49
1×8=8   2×8=16  3×8=24  4×8=32  5×8=40  6×8=48  7×8=56  8×8=64
1×9=9   2×9=18  3×9=27  4×9=36  5×9=45  6×9=54  7×9=63  8×9=72  9×9=81

主要な概念

プロジェクト2:バブルソート

使用スキル:配列、ネストされたループ、変数の交換。

要件

配列を昇順にソートします。

実装

JAVA
import java.util.Arrays;

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        
        System.out.println("ソート前: " + Arrays.toString(arr));
        
        // バブルソート
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    // 交換
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        
        System.out.println("ソート後: " + Arrays.toString(arr));
    }
}

出力

TEXT
ソート前: [64, 34, 25, 12, 22, 11, 90]
ソート後: [11, 12, 22, 25, 34, 64, 90]

主要な概念

プロジェクト3:数当てゲーム

使用スキル:Random、Scanner入力、whileループ、条件ロジック。

要件

プログラムが1-100のランダムな数値を生成し、ユーザーが推測し、プログラムが「大きすぎます」「小さすぎます」「正解」と応答します。

実装

JAVA
import java.util.Random;
import java.util.Scanner;

public class GuessNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        
        int target = random.nextInt(100) + 1;
        int guess = 0;
        int attempts = 0;
        
        System.out.println("=== 数当てゲーム ===");
        System.out.println("1-100の数字を考えています。推測してください!");
        
        while (guess != target) {
            System.out.print("推測を入力: ");
            guess = scanner.nextInt();
            attempts++;
            
            if (guess > target) {
                System.out.println("大きすぎます!もう一度試してください。");
            } else if (guess < target) {
                System.out.println("小さすぎます!もう一度試してください。");
            } else {
                System.out.println("おめでとうございます!答えは " + target + " です");
                System.out.println(attempts + " 回で推測しました");
            }
        }
        
        scanner.close();
    }
}

出力例

TEXT
=== 数当てゲーム ===
1-100の数字を考えています。推測してください!
推測を入力: 50
大きすぎます!もう一度試してください。
推測を入力: 25
小さすぎます!もう一度試してください。
推測を入力: 37
大きすぎます!もう一度試してください。
推測を入力: 31
おめでとうございます!答えは 31 です
4 回で推測しました

主要な概念

プロジェクト4:簡単な電卓

使用スキル:Scanner入力、switch文、算術演算。

要件

ユーザーが2つの数値と演算子を入力し、プログラムが計算して結果を表示します。

実装

JAVA
import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("=== 簡単な電卓 ===");
        
        System.out.print("最初の数値を入力: ");
        double num1 = scanner.nextDouble();
        
        System.out.print("演算子を入力(+ - * /): ");
        char operator = scanner.next().charAt(0);
        
        System.out.print("2番目の数値を入力: ");
        double num2 = scanner.nextDouble();
        
        double result = 0;
        boolean valid = true;
        
        switch (operator) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                if (num2 != 0) {
                    result = num1 / num2;
                } else {
                    System.out.println("エラー:ゼロで割ることはできません");
                    valid = false;
                }
                break;
            default:
                System.out.println("エラー:サポートされていない演算子 '" + operator + "'");
                valid = false;
        }
        
        if (valid) {
            System.out.printf("%.2f %c %.2f = %.2f%n", num1, operator, num2, result);
        }
        
        scanner.close();
    }
}

出力例

TEXT
=== 簡単な電卓 ===
最初の数値を入力: 10
演算子を入力(+ - * /): *
2番目の数値を入力: 5
10.00 * 5.00 = 50.00

主要な概念

追加演習

演習1:成績統計

10個の成績を入力し、平均値、最高値、最低値を計算します。

JAVA
import java.util.Scanner;
import java.util.Arrays;

public class ScoreStats {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] scores = new int[10];
        
        // 成績を入力
        for (int i = 0; i < scores.length; i++) {
            System.out.print((i + 1) + "番目の成績を入力: ");
            scores[i] = scanner.nextInt();
        }
        
        // 統計を計算
        int sum = 0, max = scores[0], min = scores[0];
        for (int score : scores) {
            sum += score;
            if (score > max) max = score;
            if (score < min) min = score;
        }
        double avg = (double) sum / scores.length;
        
        // 結果を表示
        System.out.println("\n=== 統計 ===");
        System.out.println("成績: " + Arrays.toString(scores));
        System.out.printf("平均値: %.1f%n", avg);
        System.out.println("最高値: " + max);
        System.out.println("最低値: " + min);
        
        scanner.close();
    }
}

❓ よくある質問

Q プロジェクトが思いつかない場合はどうすればいいですか?
A まず要件を分析し、ロジックを考えてから、コードを参照してください。コピーするだけではなく、各行が何をしているかを理解してください。
Q コードは実行できますが、結果が間違っている場合は?
A System.out.println()で中間変数を出力し、計算の各ステップを確認してください。
Q プログラミングスキルを向上させるにはどうすればいいですか?
A もっと練習してください。簡単なプロジェクトから始めて、徐々に難易度を上げてください。

📖 まとめ

📝 演習

  1. 電卓の改良: 剰余演算を追加し、連続計算をサポート
  2. 配列操作: 10個の数値を入力し、素数を見つける
  3. 数当てゲームの改良: 推測回数を7回に制限し、推測履歴を表示

次のレッスン

次のレッスンでは、Phase 2に移り、メソッドの基礎を学びます — メソッドの定義と使用方法を学びます。

100%