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("あなたは大人です。");
}
Javaage >= 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)」を足していきます。
同じ処理を何度も書かずに、「ループで回す」感覚を身につけると、
アプリの表現力がさらに一段階上がります。
