はじめに
この実験では、Java で数が偶数か奇数かを判断する方法を学びます。偶数を識別する基本的な原理である、数を 2 で割ったときの余りをチェックするために、剰余演算子 (%
) の使用を探ります。
このチェックを行う簡単な Java プログラムを実装し、正の整数と負の整数の両方の入力でテストし、非整数の入力を処理する方法を検討して、ソリューションをより堅牢にします。
この実験では、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 プログラムを実装しました。
さらに、正の整数と負の整数の両方の入力で偶数チェックをテストし、剰余演算子が異なる符号の数に対して期待通りに動作することを確認しました。最後に、整数以外の入力を処理する方法を検討しました。剰余演算子は通常整数型で使用されることを理解し、入力型の検証や、より堅牢なアプリケーションでの例外処理の潜在的なアプローチについて議論しました。