Javaプログラミング 演習編

luagate/java-intro-practiceJava演習65プログラミング

上から下へ、全 65 枚そのまま並べています。

発表モードで開く

Java演習

Javaプログラミング 演習編

手を動かして学ぶ全25問

1
1

目次(前半)

演習の流れ

1. 入門編の演習(変数・分岐・繰り返し)

2. 制御構造の演習(for・switch・ネスト)

3. 配列の演習(1次元・2次元)

2
2

目次(後半)

演習の流れ

4. メソッドの演習(引数・戻り値・オーバーロード)

5. データ型変換の演習

6. デバッグと例外処理の演習

3
3
Java演習

演習の進め方

効果的に演習を進める4つのポイント。

まず手を動かす
  • 完璧でなくてOK
  • エラーから学ぶ
フローを描く
  • コーディング前に流れを整理
  • 複雑な分岐ほど効果的
トレースする
  • 値の変化を追う
  • F6 ステップ実行を活用
質問する
  • 詰まったら早めに相談
  • 他の人と解法を比べる
4
4
Java演習

演習問題の章別配分

全25問を章ごとに分類した内訳です。

1086420
8
6
2
6
2
1
入門編
制御構造
配列
メソッド
型変換
その他
5
5

Java演習 - 入門編

1

入門編の演習

変数・計算・分岐・繰り返し

10
6
Java演習 - 入門編

P1-01 数値型の初期化と計算

数値型の宣言・初期化・計算を行う2つのプログラムを作成しよう。

  • Keisan1.java:int型 tate=10, yoko=5, menseki に長方形の面積を代入し表示
  • Keisan2.java:double型 hankei=8.0 で hankei × hankei × 3.14 を表示
  • 表示は System.out.println(〇〇) を使う
  • 〇〇には変数や計算式を直接書ける
11
7
Java演習 - 入門編

P1-01 解答例(Keisan1.java)

長方形の面積を計算して表示します。

java
public class Keisan1 {
    public static void main(String[] args) {
        int tate = 10;
        int yoko = 5;
        int menseki;
        menseki = tate * yoko / 2;
        System.out.println(menseki);  // 25
    }
}
12
8
Java演習 - 入門編

P1-02 文字列の扱い

文字列型と数値型を組み合わせるプログラムを作成しよう。

  • Moji1.java:String name を任意の名前で初期化し、挨拶と一緒に表示
  • 出力例:「こんにちは、山田さん。」
  • Moji2.java:int gekkyu と int zangyo を初期化
  • 「あなたの月額給与は〇〇」を1行で表示。〇〇は gekkyu + zangyo
  • 上級編:変数は gekkyu と zangyo の2つだけで実装
13
9
Java演習 - 入門編

P1-02 解答例(Moji2.java 上級)

変数を2つだけ使って合計給与を表示します。

java
public class Moji2 {
    public static void main(String[] args) {
        int gekkyu = 200000;
        int zangyo = 15000;
        // 合計用の新しい変数を使わずに、計算式を直接埋め込む
        System.out.println("あなたの月額給与は " + (gekkyu + zangyo));
    }
}
14
10
Java演習 - 入門編

P1-03 条件式の書き方

出力メッセージに合致するように、条件式の(1)(2)を完成させよう。

java
// (1) 比較演算子(不等号)
if ( /* (1) */ ) {
    System.out.println("合計額は10000以下です");
} else {
    System.out.println("合計額は10000より大きくなりました");
}

// (2) 比較演算子(等号)
if ( /* (2) */ ) {
    System.out.println("合計額は10000ではありません");
} else {
    System.out.println("合計額は10000です");
}

// 解答: (1) total <= 10000   (2) total != 10000
15
11
Java演習 - 入門編

P1-04 分岐を作ってみよう(1)

年齢による入場料判定プログラムを作成しよう(クラス名: Bunki1)。

  • int age を任意の値で初期化
  • age < 20 が true なら「入場料は未成年割引で1000円です。」
  • false なら「入場料は1500円です。」
  • ageが22のとき → 「入場料は1500円です。」
  • 条件分岐の両方を通るパターンで動作確認
16
12
Java演習 - 入門編

P1-04 解答例(Bunki1.java)

if-else でシンプルに分岐する例。

java
public class Bunki1 {
    public static void main(String[] args) {
        int age = 22;
        if (age < 20) {
            System.out.println("入場料は未成年割引で1000円です。");
        } else {
            System.out.println("入場料は1500円です。");
        }
    }
}
17
13
Java演習 - 入門編

P1-04 分岐を作ってみよう(2)

P1-04(1)を、文字列の連結で組み立てるバージョン(Bunki2)。

  • int age, int charge=1500, String comment="入場料は" を初期化
  • age < 20 のとき: comment に「未成年割引で」を追記、charge を 1000 に
  • 最後に comment + charge + "円です。" を表示
  • 出力例(age=19): 入場料は未成年割引で1000円です。
18
14
Java演習 - 入門編

P1-05 料金判定プログラム

年齢入力から料金区分を判定するプログラム(クラス名: JudgeFee)。

  • ユーザーは年齢を整数で入力
  • 60以上 → 「シルバー割引を適用します。」 + 1500円
  • 13未満 → 「子供料金を適用します。」 + 1000円
  • それ以外 → 3000円
  • 最後に「入場料金は〇〇円です。」を表示
19
15
Java演習 - 入門編

P1-05 解答例(JudgeFee.java)

年齢で料金区分を判定する例。

java
import java.util.Scanner;

public class JudgeFee {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("あなたの年齢を入力してください: ");
        int age = scan.nextInt();
        int fee;
        if (age >= 60) {
            System.out.println("シルバー割引を適用します。");
            fee = 1500;
        } else if (age < 13) {
            System.out.println("子供料金を適用します。");
            fee = 1000;
        } else {
            fee = 3000;
        }
        System.out.println("入場料金は " + fee + " 円です。");
    }
}
20
16
Java演習 - 入門編

P1-06 奇偶判定プログラム

入力された整数の奇偶を判定するプログラム(クラス名: Kigu)。

  • ユーザーは整数を入力
  • 2で割った余りが0 → 「偶数」
  • 余りが0でない → 「奇数」
  • ヒント: 剰余演算子 % を使う
21
17
Java演習 - 入門編

P1-07 1〜100の合計

穴埋めを完成させて、1から100までの合計を出力するプログラムを作ろう。

java
public class Add1to100 {
    public static void main(String[] args) {
        int num = 0;
        int ans = 0;
        while ( /* ? */ ) {     // 解答: num < 100
            num = num + 1;
            ans = ans + num;
        }
        System.out.println("答えは:" + ans);  // 答えは:5050
    }
}
22
18
Java演習 - 入門編

P1-08 Just100! ゲーム

複数の整数を入力し合計が100になるか超えるまで繰り返す(クラス名: Just100)。

  • sum を 0 で初期化
  • while ループで「数字を入力してください:」を表示し整数を入力
  • 入力値を sum に加算
  • sum == 100 → 「Just 100!」を表示して終了
  • sum > 100 → 「Over!」を表示して終了
23
19
Java演習 - 入門編

P1-08 解答例(Just100.java)

無限ループ + break で「ちょうど」「超えた」の判定を行う例。

java
import java.util.Scanner;

public class Just100 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int sum = 0;
        while (true) {
            System.out.print("数字を入力してください: ");
            int input = scan.nextInt();
            sum += input;
            if (sum == 100) {
                System.out.println("Just 100!");
                break;
            }
            if (sum > 100) {
                System.out.println("Over!");
                break;
            }
        }
    }
}
24
20

Java演習 - 制御構造

2

制御構造の演習

for・switch・ネスト・break

30
21
Java演習 - 制御構造

P2-01 定数を使ってみよう

既存の TryGradExam クラスのハードコーディング箇所を定数に置き換えよう。

  • 英語と数学の点数入力を受け、合計100点以上で進級
  • ハードコーディングされている100、上限点、下限点を final 定数に
  • 定数名は意味が伝わるように工夫(例: PASSING_SCORE, MAX_SCORE)
  • 定数を使うことで意図が読み取りやすくなる
31
22
Java演習 - 制御構造

P2-01 改善前後の比較

ハードコーディングを定数に変えるイメージ。

java
// 改善前
if (english > 100) { System.out.println("範囲外"); return; }
if (english < 0)   { System.out.println("範囲外"); return; }

// 改善後
final int MAX_SCORE = 100;
final int MIN_SCORE = 0;
final int PASSING_TOTAL = 100;
if (english > MAX_SCORE) { System.out.println("範囲外"); return; }
if (english < MIN_SCORE) { System.out.println("範囲外"); return; }
32
23
Java演習 - 制御構造

P2-02 反復処理を記述しよう

3つの反復処理パターンをfor文で実装しよう。

  • AddNumber: 入力した n について 1〜n の整数の合計を表示
  • AddOddNumber: 1〜n の奇数だけの合計を表示(i % 2 != 0 で判定)
  • AddInputNumber: 最初に n を入力、次に n 回数値を入力、合計を表示
  • 出力例: 「合計は: 32」
33
24
Java演習 - 制御構造

P2-02 解答例(AddOddNumber.java)

奇数だけを合計する典型例。

java
import java.util.Scanner;

public class AddOddNumber {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("n を入力: ");
        int n = scan.nextInt();
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            if (i % 2 != 0) {  // 奇数のみ
                sum += i;
            }
        }
        System.out.println("合計: " + sum);
    }
}
34
25
Java演習 - 制御構造

P2-03 制御構造のネスト

奇偶判定を10回繰り返し、それぞれの個数を表示するプログラム(クラス名: CountOddEven)。

  • 数値を10回入力させる(for ループで10回)
  • 各値の奇偶を if で判定し、それぞれカウント
  • ループ終了後、奇数と偶数の個数を表示
  • 出力例: 「偶数は 4 回 / 奇数は 6 回 入力されました」
35
26
Java演習 - 制御構造

P2-04 二重ループ構造(九九)

九九の表を出力するプログラムを2つ作成しよう。

  • Kuku.java: 9行9列で九九を出力
  • Kuku2.java: 整列した見やすい版(桁揃え)
  • ヒント: System.out.print と System.out.println を使い分け
  • print は改行なし、println は改行あり
36
27
Java演習 - 制御構造

P2-04 解答例(Kuku2.java)

二重ループ + 桁揃えで整った九九表を出力。

java
public class Kuku2 {
    public static void main(String[] args) {
        for (int x = 1; x <= 9; x++) {
            for (int y = 1; y <= 9; y++) {
                // %3d で右寄せ3桁
                System.out.printf("%3d", x * y);
            }
            System.out.println();  // 行末で改行
        }
    }
}
37
28
Java演習 - 制御構造

P2-05 多肢選択を書いてみよう

switch文と if-else の使い分け演習を2つ。

  • JudgePass: 英語・国語・数学の点数を入力、1科目でも70未満で「不合格」
  • GetWeekdayName: 曜日番号(1-7)を入力、日本語の曜日名を出力
  • ISO 8601: 月=1, 火=2, 水=3, 木=4, 金=5, 土=6, 日=7
  • 不正な入力には「入力エラー」を表示
38
29
Java演習 - 制御構造

P2-05 解答例(GetWeekdayName.java)

switch文で曜日番号を曜日名に変換する例。

java
import java.util.Scanner;

public class GetWeekdayName {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("曜日番号を入力してください: ");
        int num = scan.nextInt();
        switch (num) {
            case 1: System.out.println("それは月曜日です。"); break;
            case 2: System.out.println("それは火曜日です。"); break;
            case 3: System.out.println("それは水曜日です。"); break;
            case 4: System.out.println("それは木曜日です。"); break;
            case 5: System.out.println("それは金曜日です。"); break;
            case 6: System.out.println("それは土曜日です。"); break;
            case 7: System.out.println("それは日曜日です。"); break;
            default: System.out.println("入力エラー");
        }
    }
}
39
30
Java演習 - 制御構造

P2-06 複合条件(うるう年判定)

うるう年の3条件を複合条件式で実装(クラス名: JudgeLeapYear)。

  • 条件①: 西暦年が4で割り切れる年はうるう年
  • 条件②: 西暦年が100で割り切れる年はうるう年ではない
  • 条件③: 西暦年が400で割り切れる年はうるう年
  • 正しい論理式: (year%4==0 && year%100!=0) || year%400==0
40
31
Java演習 - 制御構造

P2-06 解答例(JudgeLeapYear.java)

うるう年判定の論理式を1つの if にまとめる。

java
import java.util.Scanner;

public class JudgeLeapYear {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("西暦を入力: ");
        int year = scan.nextInt();
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            System.out.println("うるう年");
        } else {
            System.out.println("うるう年ではない");
        }
    }
}
41
32

Java演習 - 配列

3

配列の演習

1次元配列・2次元配列

50
33
Java演習 - 配列

P2-07 配列の操作練習

1次元配列の基本操作を2問。

  • ArraySum: 整数配列(要素2個以上)を定義、全要素の合計値を表示
  • ArrayReverse: 10個の文字列を入力し配列に格納、逆順で表示
  • scan.next() で文字列を入力する(nextInt() ではない)
  • ループを2つ使う:入力用と出力用
51
34
Java演習 - 配列

P2-07 解答例(ArrayReverse.java)

配列に格納した文字列を逆順で表示する例。

java
import java.util.Scanner;

public class ArrayReverse {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String[] array = new String[10];

        // 入力ループ
        for (int i = 0; i < array.length; i++) {
            System.out.print("入力 " + (i + 1) + ": ");
            array[i] = scan.next();
        }

        // 逆順表示ループ
        for (int i = array.length - 1; i >= 0; i--) {
            System.out.println(array[i]);
        }
    }
}
52
35
Java演習 - 配列

P2-08 2次元配列の操作練習

九九の値を2次元配列に格納するプログラム(クラス名: KukuArray)。

  • int[][] kuku = new int[9][9]; で2次元配列を確保
  • 二重 for ループで kuku[i][j] = (i+1) * (j+1) を代入
  • 格納するだけでは画面に何も表示されない
  • 検証用に表示コードを別途書いてみる
53
36
Java演習 - 配列

P2-08 解答例(KukuArray.java)

2次元配列への代入と検証用表示を組み合わせた例。

java
public class KukuArray {
    public static void main(String[] args) {
        int[][] kuku = new int[9][9];
        // 値の代入
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                kuku[i][j] = (i + 1) * (j + 1);
            }
        }
        // 検証用表示
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                System.out.printf("%3d", kuku[i][j]);
            }
            System.out.println();
        }
    }
}
54
37

Java演習 - メソッド

4

メソッドの演習

引数・戻り値・オーバーロード

70
38
Java演習 - メソッド

P3-01 引数と戻り値の練習

4つのメソッドを実装してみよう。

  • hello: 引数なし、戻り値なし。「Hello!」を出力
  • greet: String を受けて、その文字列を出力
  • luckyNumber: 引数なし、1〜10のランダム整数を返す
  • calcSquare: int を受けて、その2乗を返す
71
39
Java演習 - メソッド

P3-01 解答例

4つのメソッドのシグネチャと処理。

java
public class TryMethods {
    public static void main(String[] args) {
        hello();
        greet("こんにちは");
        System.out.println("ラッキーナンバーは " + luckyNumber());
        System.out.println("一辺 3 の正方形の面積は " + calcSquare(3));
    }

    static void hello() {
        System.out.println("Hello!");
    }
    static void greet(String msg) {
        System.out.println(msg);
    }
    static int luckyNumber() {
        return (int)(Math.random() * 10) + 1;  // 1〜10
    }
    static int calcSquare(int n) {
        return n * n;
    }
}
72
40
Java演習 - メソッド

P3-02 メソッドの仕様変更

回転寿司の会計計算を仕様変更しよう。

  • ①: 同じ色の皿を4皿以上注文すると1皿無料(CalcSushiPayment2)
  • ②: ①に追加。300円以上の皿には1皿無料を適用しない(CalcSushiPayment3)
  • ヒント: 皿数 - 1 を計算する条件分岐を追加
  • 出力例: 「お会計金額は 1450 円です」
73
41
Java演習 - メソッド

P3-03 メソッドの理解の確認

既存のソースコードを読み解く演習。

  • S3-01 のコードのウォークスルーを行う
  • プログラム実行から終了までの処理順序を説明できるようになる
  • 変数の値の変化を順番に追う(トレース)
  • 他の人に説明することで理解が深まる
74
42
Java演習 - メソッド

P3-03 メソッドを使ってみよう(最大公約数)

既存メソッドを呼び出して結果を表示するプログラム(クラス名: ShowGcd)。

  • ShowGcd には calcGcd メソッドが既に実装されている
  • 2つの数値を入力し calcGcd を呼び出して最大公約数を表示
  • 入力例: 912 と 642 → 結果: 6
  • calcGcd の中身は理解しなくてOK。使い方の練習
75
43
Java演習 - メソッド

P3-04 メソッドを作ってみよう(台形)

台形の面積を計算するメソッドを実装(クラス名: ShowTrapezoidArea)。

  • ユーザーは上底・下底・高さを double で入力
  • calcTrapezoidArea(double, double, double) を新規実装
  • 台形の面積 = (上底 + 下底) × 高さ ÷ 2
  • double を入力するには scan.nextDouble() を使う
76
44
Java演習 - メソッド

P3-04 解答例(ShowTrapezoidArea.java)

台形面積メソッドのシグネチャと呼び出し例。

java
import java.util.Scanner;

public class ShowTrapezoidArea {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("上底を入力: "); double top = scan.nextDouble();
        System.out.print("下底を入力: "); double bottom = scan.nextDouble();
        System.out.print("高さを入力: "); double height = scan.nextDouble();
        double area = calcTrapezoidArea(top, bottom, height);
        System.out.println("面積は: " + area);
    }

    static double calcTrapezoidArea(double top, double bottom, double height) {
        return (top + bottom) * height / 2;
    }
}
77
45
Java演習 - メソッド

P3-05 プログラムの引数のチェック

main の引数(コマンドライン引数)の数をチェックするコードに改修しよう。

  • プログラムは「名前」「年齢」「職業」の3つを引数として受け取る
  • 引数が3つ未満 → エラー終了
  • 引数が4つ以上 → 4つ目以降は無視(同様にエラー終了で良い)
  • エラー時のメッセージ: 「引数は3つ(名前、年齢、職業)です。」
  • ヒント: args.length で個数取得、return; で main を終了
78
46
Java演習 - メソッド

P3-05 解答例

引数チェックの典型パターン。

java
public class MainArgsCheck {
    public static void main(String[] args) {
        if (args.length != 3) {
            System.out.println("引数は3つ(名前、年齢、職業)です。");
            return;
        }
        String name = args[0];
        int age = Integer.parseInt(args[1]);
        String job = args[2];
        System.out.println("Hello! " + name + ".");
        System.out.println("You are " + age + " years old " + job + "...");
    }
}
79
47
Java演習 - メソッド

P3-06 オーバーロードの実装

calcArea メソッドのオーバーロードを2つ追加しよう。

  • 既存: calcArea(int width, int height) → 長方形
  • 追加①: calcArea(int side) → 正方形
  • 追加②: calcArea(int top, int bottom, int height) → 台形
  • 期待出力: 「幅 10 高さ 8 の長方形の面積は 80」「一辺 9 の正方形の面積は 81」「上底 7 下底 10 高さ 5 の台形の面積は 42」
80
48
Java演習 - メソッド

P3-06 解答例(PrcOverload.java)

オーバーロードで同名メソッドを複数定義する例。

java
public class PrcOverload {
    public static void main(String[] args) {
        calcArea(10, 8);
        calcArea(9);
        calcArea(7, 10, 5);
    }

    static void calcArea(int width, int height) {
        System.out.println("幅 " + width + " 高さ " + height + " の長方形の面積は " + (width * height));
    }
    static void calcArea(int side) {
        System.out.println("一辺 " + side + " の正方形の面積は " + (side * side));
    }
    static void calcArea(int top, int bottom, int height) {
        int area = (top + bottom) * height / 2;
        System.out.println("上底 " + top + " 下底 " + bottom + " 高さ " + height + " の台形の面積は " + area);
    }
}
81
49

Java演習 - 型変換

5

データ型変換の演習

自動型変換・キャスト・parseInt

90
50
Java演習 - 型変換

P3-07 式と値

既存メソッド(add, sub, mul)を組み合わせて、四則演算と同じ優先順位で計算しよう。

  • 割り算メソッドは用意されていない(Javaの / 演算子を使う)
  • 各穴埋めは1行で記述する
  • 計算の途中で値を保持する変数は使わない
  • 期待出力: 1+2=3, 1+2-3=0, 1×2+3=5, 1+2×3=7, 4×3-5÷2=10
91
51
Java演習 - 型変換

P3-07 解答イメージ

add/sub/mul を入れ子にして優先順位を表現。

java
// (1) 1+2 = 3
add(1, 2)

// (2) 1+2-3 = 0
sub(add(1, 2), 3)

// (3) 1×2+3 = 5
add(mul(1, 2), 3)

// (4) 1+2×3 = 7
add(1, mul(2, 3))

// (5) 4×3-5÷2 = 10
sub(mul(4, 3), 5/2)  // 5/2 はint割り算なので 2
92
52
Java演習 - 型変換

P3-08 型変換を練習しよう

既存プログラムの型変換に関する2つの問題を修正しよう。

  • 課題①: テストの平均点を整数ではなく小数まで含めて表示
  • 課題②: 所得税総額の計算結果が正しくない(int の範囲を超えている)
  • ①ヒント: scoreSum / scores.length を double にキャスト
  • ②ヒント: workers と incomeTaxPerWorker のどちらかを long 型に変更
93
53
Java演習 - 型変換

P3-08 解答例

int の桁あふれと小数表示の対応。

java
// 課題①: 平均点を小数で
double avg = (double) scoreSum / scores.length;
System.out.println("平均点は、" + avg);  // 71.5

// 課題②: long で計算する
long workers = 50000000L;          // 末尾Lでlongリテラル
long incomeTaxPerWorker = 170000L;
System.out.println("所得税の総額は、" + (workers * incomeTaxPerWorker));
// 8500000000000
94
54
Java演習 - 型変換

P3-09 整数型への型変換

プログラム引数を整数に変換するプログラム(クラス名: DayCountFor30)。

  • 引数は2個(名前、年齢)
  • 引数の数が2でなければエラー終了
  • args[1] を Integer.parseInt で int に変換
  • age < 30 なら「nameさんの30歳までの日数は多くても dayRemain日です。」
  • それ以外は「nameさんは既に30歳です」
  • dayRemain = (30 - age) × 365
95
55

Java演習 - デバッグ

6

デバッグと例外処理の演習

トレースとエラー対応

110
56
Java演習 - デバッグ

プログラムのトレース演習

Eclipse のデバッグ機能でプログラムの動きを追跡しよう。

  • ShowGcd クラスを動作させ、calcGcd メソッド内でステップ実行
  • 入力: 320 と 115 で実行
  • ループ回数ごとに a, b, rem の値を記録(トレース表)
  • 変数ビューで値の変化を観察
111
57
Java演習 - デバッグ

トレース表のサンプル

calcGcd メソッドのループでの値変化(入力: 320, 115)。

ループ回数
aの値
bの値
remの値

開始

320

115

-

1回目

115

90

90

2回目

90

25

25

3回目

25

15

15

4回目

15

10

10

5回目

10

5

5

6回目

5

0

0(終了)

112
58
Java演習 - 例外処理

例外処理のトレース演習

TryExceptionHandling クラスで例外発生時の挙動を確認しよう。

  • 正常系(10/2など)で実行 → catchブロックは実行されない
  • 0除算で実行 → catchブロックに入る、Exception e に詳細が格納
  • 数値以外("abc")を入力 → 別の例外(InputMismatchException)
  • 変数ビューで Exception e の中身を確認
113
59
Java演習 - 例外処理

例外発生パターンの観察

3つの入力パターンで例外がどう変わるか確認する。

java
try {
    Scanner scan = new Scanner(System.in);
    System.out.print("分子: ");
    int a = scan.nextInt();
    System.out.print("分母: ");
    int b = scan.nextInt();
    int result = a / b;
    System.out.println("結果: " + result);
}
catch (Exception e) {
    // ここにブレークポイントを置いて e の中身を見る
    System.out.println("例外: " + e.getClass().getSimpleName());
    System.out.println("メッセージ: " + e.getMessage());
}

// 入力パターン:
// 1) 10, 2  → 例外なし
// 2) 10, 0  → ArithmeticException: / by zero
// 3) 10, abc → InputMismatchException
114
60
Java演習 - 例外処理

参考編 P4-01 文字型を扱ってみよう

char型を使った文字列操作の演習(参考編)。

  • WidePrint: "HELLO!" を1文字おきにスペース挟んで表示 → 「H E L L O !」
  • WidePrint2: 上記をユーザー入力した文字列で実現
  • ヒント: str.length() で文字列の長さ、str.charAt(i) で1文字取得
  • ReverseString: "NOW I WON !" を char配列に格納し、逆順表示
115
61
Java演習 - 例外処理

P4-01 解答例(WidePrint.java)

charAt を使って1文字ずつ取り出して間にスペースを挟む例。

java
public class WidePrint {
    public static void main(String[] args) {
        String s = "HELLO!";
        for (int i = 0; i < s.length(); i++) {
            System.out.print(s.charAt(i));
            if (i < s.length() - 1) {
                System.out.print(" ");
            }
        }
        System.out.println();  // H E L L O !
    }
}
116
62
Java演習
クイズ

演習総まとめクイズ

演習全体の理解を確認しましょう。

P3-08(所得税の総額)で、int * int の結果が桁あふれするのを防ぐ正しい対処はどれ?

A
int を short に変える
B
片方を long 型にする(例: long workers = ...)
C
両方を String にする
D
System.out.println を使わない
120
63
Java演習
答え

演習総まとめクイズ 解答

P3-08(所得税の総額)で、int * int の結果が桁あふれするのを防ぐ正しい対処はどれ?

A
int を short に変える
B
片方を long 型にする(例: long workers = ...)
C
両方を String にする
D
System.out.println を使わない

int 同士の掛け算は int の範囲(約±21億)に収まる必要があります。それを超える可能性がある場合、片方を long にすることで自動型変換が働き、計算結果も long 型になります。

121
64
"

手を動かして書いたコードは、読んで覚えたコードの10倍身につく。詰まった所こそ最大の学習ポイント。

Javaプログラミング 演習編 完結

130
65