Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 2日目

Java Java
スポンサーリンク

2日目のゴールとテーマ

2日目のテーマは
「ユーザーの入力を受け取り、条件分岐で“動きが変わるアプリ”を作る」 です。

1日目は、決まった文字や数字を「表示するだけ」の世界でした。
今日はそこから一歩進んで、

ユーザーから値を入力してもらう
if文で条件によって処理を変える
簡単な「判定アプリ」を作る

ここまでを目指します。
ここを越えると、「ただの表示」から「会話するアプリ」に変わっていきます。


キーボードから入力を受け取る仕組みを知る

Scannerクラスで入力を読む

Javaでキーボード入力を受け取るとき、よく使われるのが Scanner クラスです。
まずは、最小の例から見てみましょう。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("あなたの名前を入力してください:");
        String name = scanner.nextLine();

        System.out.println("こんにちは、" + name + "さん!");
    }
}
Java

ここで出てきた新しい要素を、順番にかみ砕きます。

import java.util.Scanner;
これは「java.util というパッケージの中にある Scanner クラスを使います」という宣言です。
標準ライブラリの一部を「持ってくる」イメージです。

Scanner scanner = new Scanner(System.in);
ここで、Scanner の「インスタンス(実物)」を作っています。
System.in は「標準入力(キーボード)」を表します。
つまり、「キーボードから入力を読むための Scanner」を用意している、ということです。

String name = scanner.nextLine();
nextLine() は、「1行分の文字列を読み取る」メソッドです。
ユーザーが Enter を押すまで待ち、その行を文字列として返します。

この3つをセットで覚えておくと、
「文字列を入力してもらう」ことができるようになります。


数字を入力してもらう

nextIntで整数を読む

次に、「整数を入力してもらう」パターンを見てみましょう。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("あなたの年齢を入力してください:");
        int age = scanner.nextInt();

        System.out.println("あなたは " + age + " 歳ですね。");
    }
}
Java

ここでのポイントは nextInt() です。

int age = scanner.nextInt();
これは、「ユーザーが入力した整数を読み取って、age に入れる」という意味です。

注意点として、
nextInt() は「数字だけ」を読み取ります。
もしユーザーが「20歳」のように文字を混ぜて入力すると、エラーになります。
最初のうちは、「数字だけ入力してもらう」前提で考えてOKです。


if文で「条件によって動きを変える」

ifの基本形を覚える

次は、条件分岐です。
Javaの if 文の基本形はこうです。

if (条件式) {
    // 条件が true のときに実行される処理
}
Java

例えば、「年齢が20以上なら“大人です”と表示する」コードはこうなります。

if (age >= 20) {
    System.out.println("あなたは大人です。");
}
Java

age >= 20 が true のときだけ、中の println が実行されます。
false のときは、何も起きません。


if〜elseで「どちらか一方」を選ぶ

条件が成り立たないときの処理を書く

「大人か子どもか」のように、
どちらか一方を必ず選びたいときは、else を使います。

if (age >= 20) {
    System.out.println("あなたは大人です。");
} else {
    System.out.println("あなたは未成年です。");
}
Java

ここでは、

age が 20以上 → 「大人です」
それ以外 → 「未成年です」

という分岐になっています。

if の条件は「true か false を返す式」です。
>= のほかにも、よく使うものはこうです。

== 等しい
!= 等しくない
> より大きい
< より小さい
<= 以下

Pythonと似ていますが、
「等しい」は == であることに注意してください(= は代入です)。


if〜else if〜elseで「3つ以上のパターン」を分ける

年齢でメッセージを細かく変える

例えば、年齢によってメッセージを変えたいとします。

0〜12歳: 子ども
13〜19歳: ティーン
20歳以上: 大人

これを if で書くと、こうなります。

if (age < 13) {
    System.out.println("あなたは子どもです。");
} else if (age < 20) {
    System.out.println("あなたはティーンです。");
} else {
    System.out.println("あなたは大人です。");
}
Java

ここでの重要ポイントは、「上から順番に判定される」ということです。

age が 10 の場合
age < 13 が true なので、最初のブロックが実行され、残りは無視される。

age が 15 の場合
age < 13 は false
→ 次の age < 20 が true なので、「ティーン」が選ばれる。

age が 25 の場合
→ 最初も2番目も false
→ 最後の else が実行される。

この「上から順にチェックして、最初に当てはまったところで止まる」という動きは、
if〜else if〜else の基本です。


2日目のミニアプリ:年齢判定アプリ

入力+条件分岐を組み合わせる

ここまでの要素を組み合わせて、
「年齢によってメッセージを変えるアプリ」を作ってみましょう。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("=== 年齢判定アプリ ===");
        System.out.print("あなたの年齢を入力してください: ");

        int age = scanner.nextInt();

        System.out.println("あなたは " + age + " 歳ですね。");

        if (age < 0) {
            System.out.println("年齢がマイナスになっています。入力を確認してください。");
        } else if (age < 13) {
            System.out.println("あなたは子どもです。");
        } else if (age < 20) {
            System.out.println("あなたはティーンです。");
        } else if (age < 65) {
            System.out.println("あなたは大人です。");
        } else {
            System.out.println("あなたはシニアです。");
        }

        System.out.println("ご利用ありがとうございました。");
    }
}
Java

ここでの深掘りポイントは、「ありえない値も一応チェックしている」ことです。

age < 0 のような条件は、普通は起こらないはずですが、
ユーザーが間違って入力する可能性はあります。
こういう「おかしな入力」に対しても、
アプリが落ちずにメッセージを出せるようにしておくと、
一気に“ちゃんとしたアプリ”っぽくなります。


true / false と論理演算

条件式は「真偽値」を返す

if の中に書く条件式は、
最終的に「true か false か」に評価されます。

例えば、

age >= 20 は、age が 20以上なら true、そうでなければ false。
age < 13 は、age が 13未満なら true、そうでなければ false。

Javaには、真偽値を表す boolean 型があります。

boolean isAdult = age >= 20;
Java

こう書くと、age が 20以上なら isAdult は true、
それ以外なら false になります。

さらに、条件を組み合わせることもできます。

&& 両方とも true のときだけ true(かつ)
|| どちらかが true なら true(または)
! true と false をひっくり返す(否定)

例えば、「20歳以上かつ65歳未満」を boolean で書くと、

boolean isWorkingAge = age >= 20 && age < 65;
Java

となります。

これを if に使うと、

if (isWorkingAge) {
    System.out.println("あなたは働き盛りの年齢です。");
}
Java

のように書けます。

最初は無理に boolean 変数を使わなくてもいいですが、
「条件式は true / false を返す」という感覚は持っておくと、
後々すごく楽になります。


1日目のレシートアプリを「入力対応」にしてみる

昨日のコードを“成長させる”感覚

最後に、1日目のレシートアプリを、
「個数をユーザーに入力してもらう」形に進化させてみましょう。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String shopName = "コーヒーショップ Java";
        String itemName = "ブレンドコーヒー";
        int price = 350;

        System.out.println("=== レシートアプリ(入力版) ===");
        System.out.println("店名: " + shopName);
        System.out.println("商品: " + itemName);
        System.out.println("単価: " + price + "円");

        System.out.print("購入する杯数を入力してください: ");
        int count = scanner.nextInt();

        if (count <= 0) {
            System.out.println("0以下の数量は購入できません。");
            return;
        }

        int total = price * count;

        System.out.println("--------------------");
        System.out.println("数量: " + count + "杯");
        System.out.println("合計: " + total + "円");
        System.out.println("ご利用ありがとうございました。");
    }
}
Java

ここでの重要ポイントは、「既存のコードに“入力”と“条件チェック”を足している」ことです。

count が 0以下のときに、
「おかしいですよ」とメッセージを出して、早めに return している。
正常なときだけ、合計金額を計算して表示している。

こうやって、昨日のコードを「少しずつ賢くしていく」感覚が、
アプリを育てるときにとても大事になります。


2日目で一番大事な感覚

「入力と条件分岐が入ると、アプリは“会話”になる」

今日あなたに持ってほしい感覚はこれです。

1日目のアプリは、「決まったことをしゃべるだけ」でした。
2日目のアプリは、「相手の答えを聞いて、返事を変える」ようになりました。

Scanner で入力を受け取る
if で条件によって処理を変える

この2つが入るだけで、
アプリは一気に「対話する存在」になります。


2日目のまとめと、3日目への予告

今日やったことを短くまとめると、

Scanner クラスでキーボード入力を受け取れる
nextLine() で文字列、nextInt() で整数を読む
if / else / else if で条件分岐ができる
比較演算子(==, !=, <, >, <=, >=)で条件式を書く
簡単な判定アプリや、入力対応レシートアプリを作れる

3日目は、ここに「繰り返し(for / while)」を足していきます。
同じ処理を何度も書かずに、「ループで回す」感覚を身につけると、
アプリの表現力がさらに一段階上がります。

タイトルとURLをコピーしました