今回も問題を解いていきましょう。
問題
次のコードの出力結果を予想してください。正しい選択肢を選んでください。
public class Main {
public static void main(String[] args) {
int result = 1 + 2 * 3 - 4 / 2;
System.out.println("Result: " + result);
}
}
選択肢
- A. Result: 5
- B. Result: 3
- C. Result: 7
- D. Result: 6
答えと解説
回答を見る
答え
A. Result: 5
解説
この問題は、演算子の優先順位と、その組み合わせの影響を理解することが求められます。
基本説明
Javaでは演算子に優先順位が設定されており、優先順位が高い演算子から計算が行われます。
このコードでは、掛け算(*)
と割り算(/)
が足し算(+)
や引き算(-)
よりも優先されます。
つまり、コードは最初に`2 * 3`が計算されて6
になり、次に`4 / 2`が計算され2
になります。
最後に、`1 + 6 – 2`が計算され、最終的な結果は5
となります。
誤答理由
誤った答えを選んでしまう理由としては、演算子の優先順位を無視して、左から順に計算してしまうことです。
たとえば、左から順に計算すると`1 + 2 = 3`、次に`3 * 3 = 6`、そして`6 – 4 = 2`、`2 / 2 = 1`となり、全く異なる結果になってしまいます。
演算子の優先順位を意識した組み合わせで計算することが重要です。
つまずきポイント
演算子の優先順位を意識することは初学者には難しい部分です。
特に`+`や`-`よりも`*`や`/`が優先されることは、一見直感的ではないかもしれません。
まずは、基本的な演算子の優先順位をリスト化し、それをもとに問題を解く練習を重ねると良いでしょう。
発展知識
より複雑な数式になっても正確に理解できるよう、括弧( )
を使うことで優先して計算させたい部分を設定できます。
今回の例で言えば、`(1 + (2 * 3) – (4 / 2))`という形で全体を括弧で囲っても結果は同じですが、計算手順がより明示されるため、エラーを防ぐのに役立ちます。
日頃から括弧を意識して使うことで、複雑な計算入りの条件式でもミスを減らすことができるでしょう。