ゼロと負の数を扱う
前のステップでは、正の数を識別することに焦点を当てました。今度は、プログラムを拡張して、ゼロと負の数も識別できるようにしましょう。これにより、配列内の数値全体の状況を把握することができます。
まず、従来の for
ループを使ったアプローチで、PositiveCheck.java
ファイルを再度修正して、ゼロと負の数のチェックを追加します。if-else if-else
文を使った条件分岐のロジックは理解しやすいからです。
エディタで PositiveCheck.java
ファイルを開き、既存のコードを以下のコードに置き換えます。
public class PositiveCheck {
public static void main(String[] args) {
// Define an array of integers
int[] numbers = {10, -5, 20, 0, 15, -8};
// Loop through the array
for (int i = 0; i < numbers.length; i++) {
// Get the current number
int currentNumber = numbers[i];
// Check if the number is positive, negative, or zero
if (currentNumber > 0) {
System.out.println(currentNumber + " is a positive number.");
} else if (currentNumber < 0) {
System.out.println(currentNumber + " is a negative number.");
} else {
System.out.println(currentNumber + " is zero.");
}
}
}
}
新しい部分は以下の通りです。
else if (currentNumber < 0)
: これは else if
文です。前の if
条件 (currentNumber > 0
) が偽の場合にのみ、currentNumber
が 0 より小さいかどうかをチェックします。
else
: これは else
文です。else
ブロック内のコードは、先行する if
または else if
条件のいずれも真でない場合に実行されます。この場合、数値が 0 より大きくなく、0 より小さくない場合、それは 0 であると判断されます。
PositiveCheck.java
ファイルを保存します。
次に、ターミナルで修正したプログラムをコンパイルして実行します。
javac PositiveCheck.java
java PositiveCheck
これで、配列内の各数値が分類された出力が表示されるはずです。
10 is a positive number.
-5 is a negative number.
20 is a positive number.
0 is zero.
15 is a positive number.
-8 is a negative number.
これは、ループ内で if-else if-else
文を使って複数の条件を扱う方法を示しています。これは、プログラミングにおける意思決定の基本的なパターンです。
partitioningBy
や複数の filter
操作などの高度な手法を使って Stream API でも同様の結果を得ることができますが、この特定のタスクには、特に初心者にとって、if-else if-else
を使った for
ループのアプローチが明確で簡単です。