はじめに
この実験では、Java で数が偶数か奇数かを判断する方法を学びます。偶数を識別する基本的な原理である、数を 2 で割ったときの余りをチェックするために、剰余演算子 (%) の使用を探ります。
このチェックを行う簡単な Java プログラムを実装し、正の整数と負の整数の両方の入力でテストし、非整数の入力を処理する方法を検討して、ソリューションをより堅牢にします。
剰余演算子を使用した偶数チェック
このステップでは、Java で剰余演算子を使用して数が偶数か奇数かを判断する方法を学びます。剰余演算子 (%) は、除算の余りを返します。たとえば、10 % 3 は 1 です。なぜなら、10 を 3 で割ると商が 3 で余りが 1 だからです。
偶数は、2 で割り切れる(余りが 0 になる)任意の整数です。つまり、偶数を 2 で割ると、余りは常に 0 になります。この条件をチェックするために、剰余演算子を使用することができます。
数が偶数かどうかをチェックする簡単な Java プログラムを作成しましょう。
WebIDE エディタで
EvenCheck.javaファイルを開きます。ファイルが存在しない場合は、~/projectディレクトリに作成します。左側のファイルエクスプローラーで右クリックし、「新しいファイル」を選択してEvenCheck.javaと入力することで作成できます。EvenCheck.javaファイルに以下のコードを追加します。public class EvenCheck { public static void main(String[] args) { int number = 10; // We'll check if this number is even // Use the modulo operator to check for a remainder when divided by 2 if (number % 2 == 0) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } }新しい部分を見てみましょう。
int number = 10;:これは、numberという名前の整数変数を宣言し、それに値 10 を割り当てます。この値を変更して、異なる数をテストすることができます。if (number % 2 == 0):これはif文です。括弧内の条件が真であるかどうかをチェックします。条件number % 2 == 0は、numberを 2 で割った余りが 0 と等しいかどうかをチェックします。System.out.println(number + " is an even number.");:この行は、if文の条件が真の場合(数が偶数の場合)に実行されます。else:このキーワードは、if文の条件が偽の場合(数が奇数の場合)に実行されるコードブロックを導入します。System.out.println(number + " is an odd number.");:この行は、数が奇数の場合に実行されます。
EvenCheck.javaファイルを保存します(Ctrl+S または Cmd+S)。次に、プログラムをコンパイルします。WebIDE の下部にあるターミナルを開き、
~/projectディレクトリにいることを確認します。そして、以下のコマンドを実行します。javac EvenCheck.javaエラーがなければ、
EvenCheck.classファイルが作成されます。最後に、コンパイルされたプログラムを実行します。
java EvenCheck数 10 が偶数か奇数かを示す出力が表示されるはずです。
10 is an even number.
これで、EvenCheck.java ファイルの number 変数の値を別の整数(たとえば、7、-5、0)に変更し、ステップ 3、4、5 を繰り返して、出力がどのように変化するかを確認してみましょう。
正の数と負の数でテストする
前のステップでは、正の整数が偶数か奇数かを正常にチェックしました。今度は、剰余演算子が負の数とゼロでどのように動作するかを調べてみましょう。偶数と奇数の概念は、負の数やゼロを含むすべての整数に適用されます。
整数が 2 で割り切れる(つまり余りが 0 である)場合、その整数は偶数です。この定義は負の数にも当てはまります。たとえば、-4 は偶数です。なぜなら、-4 を 2 で割ると -2 で余りが 0 だからです。-3 は奇数です。なぜなら、-3 を 2 で割ると -1 で余りが -1(または 1、負の数の剰余の定義によりますが、重要なのは 0 でないことです)だからです。ゼロも偶数と見なされます。なぜなら、0 を 2 で割ると 0 で余りが 0 だからです。
EvenCheck.java プログラムを修正して、さまざまな正の数、負の数、およびゼロでテストしましょう。
WebIDE エディタで
EvenCheck.javaファイルを開きます。mainメソッドを修正して、いくつかの異なる数をテストします。number変数の値を複数回変更するか、複数のif-elseブロックを追加して異なる数を順番にチェックすることができます。簡単にするために、numberの値を変更して、各テストケースでプログラムを再実行しましょう。
まず、正の奇数でテストしましょう。int number = 10; の行を次のように変更します。
int number = 7; // Test with a positive odd number
ファイルを保存します。
ターミナルで修正したプログラムをコンパイルします。
javac EvenCheck.java
- プログラムを実行します。
java EvenCheck
次の出力が表示されるはずです。
7 is an odd number.
- 次に、負の偶数でテストしましょう。
int number = 7;の行を次のように変更します。
int number = -4; // Test with a negative even number
ファイルを保存します。
プログラムをコンパイルします。
javac EvenCheck.java
- プログラムを実行します。
java EvenCheck
次の出力が表示されるはずです。
-4 is an even number.
- 次に、負の奇数でテストしましょう。
int number = -4;の行を次のように変更します。
int number = -3; // Test with a negative odd number
ファイルを保存します。
プログラムをコンパイルします。
javac EvenCheck.java
- プログラムを実行します。
java EvenCheck
次の出力が表示されるはずです。
-3 is an odd number.
- 最後に、ゼロでテストしましょう。
int number = -3;の行を次のように変更します。
int number = 0; // Test with zero
ファイルを保存します。
プログラムをコンパイルします。
javac EvenCheck.java
- プログラムを実行します。
java EvenCheck
次の出力が表示されるはずです。
0 is an even number.
ご覧のとおり、剰余演算子は正の数、負の数、およびゼロの値に対して偶数と奇数を正しく識別します。number % 2 == 0 というロジックは、任意の整数の偶数性をチェックする信頼性の高い方法です。
整数以外の入力を処理する
前のステップでは、剰余演算子を使用して整数が偶数か奇数かを正常にチェックしました。しかし、ユーザーが整数ではないもの、たとえば小数やテキストを入力しようとした場合はどうなるでしょうか?現在のプログラムは整数 (int) で動作するように設計されており、整数以外の入力を提供するとエラーが発生します。
このステップでは、プログラムを修正してユーザーからの入力を受け取り、入力が有効な整数でない場合を処理します。「はじめての Java 実験」で簡単に触れた Scanner クラスを使用して、ユーザー入力を読み取ります。
WebIDE エディタで
EvenCheck.javaファイルを開きます。ファイルの内容全体を以下のコードに置き換えます。
import java.util.Scanner;
import java.util.InputMismatchException;
public class EvenCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer: ");
try {
int number = scanner.nextInt(); // Read integer input from the user
// Use the modulo operator to check for a remainder when divided by 2
if (number % 2 == 0) {
System.out.println(number + " is an even number.");
} else {
System.out.println(number + " is an odd number.");
}
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter an integer.");
} finally {
scanner.close(); // Close the scanner
}
}
}
変更点を見てみましょう。
import java.util.Scanner;:入力を読み取るためのScannerクラスをインポートします。import java.util.InputMismatchException;:入力が期待される型と一致しない場合にスローされる例外クラスをインポートします。Scanner scanner = new Scanner(System.in);:コンソールから入力を読み取るためのScannerオブジェクトを作成します。System.out.print("Enter an integer: ");:ユーザーに数値の入力を促します。try { ... } catch (InputMismatchException e) { ... }:これはエラー処理に使用されるtry-catchブロックです。tryブロック内のコードが実行されます。InputMismatchExceptionが発生した場合(つまり、入力が整数でない場合)、catchブロック内のコードが実行されます。int number = scanner.nextInt();:この行は、ユーザー入力から整数を読み取ろうとします。ユーザーが整数として解釈できないものを入力した場合、InputMismatchExceptionがスローされます。System.out.println("Invalid input. Please enter an integer.");:InputMismatchExceptionが捕捉された場合、このメッセージが表示されます。finally { scanner.close(); }:finallyブロック内のコードは、例外が発生したかどうかに関係なく常に実行されます。ここではScannerリソースを閉じるために使用されます。
ファイルを保存します。
ターミナルで修正したプログラムをコンパイルします。
javac EvenCheck.java
- プログラムを実行します。
java EvenCheck
- 入力を求められたら、整数(たとえば
15)を入力して Enter キーを押します。プログラムはそれが偶数か奇数かを正しく識別するはずです。
Enter an integer: 15
15 is an odd number.
- 再度プログラムを実行します。
java EvenCheck
- 今度は、入力を求められたら、整数でない値(たとえば
helloや3.14)を入力して Enter キーを押します。プログラムは無効な入力を適切に処理するはずです。
Enter an integer: hello
Invalid input. Please enter an integer.
try-catch ブロックを追加することで、プログラムはより堅牢になり、ユーザーが期待される形式ではない入力を提供した場合を処理できるようになりました。これは、使いやすいプログラムを作成する上で重要な側面です。
まとめ
この実験では、Java で剰余演算子 (%) を使用して数が偶数かどうかをチェックする方法を学びました。偶数は 2 で割ったときの余りが 0 であることを発見しました。if-else 文を使用して、このチェックを実行し、与えられた整数が偶数か奇数かを出力する簡単な Java プログラムを実装しました。
さらに、正の整数と負の整数の両方の入力で偶数チェックをテストし、剰余演算子が異なる符号の数に対して期待通りに動作することを確認しました。最後に、整数以外の入力を処理する方法を検討しました。剰余演算子は通常整数型で使用されることを理解し、入力型の検証や、より堅牢なアプリケーションでの例外処理の潜在的なアプローチについて議論しました。



