質問: (TextView) findViewById(R.id.textView); if(2<= hourOfDay <= 9) { textView.setText("おはよう"); }else if(10<= hourOfDay <= 17) { textView.setText("こんにちは"); }else if(18<= hourOfDay <= 23 || 0<= hourOfDay <= 1){ textView.setText("こんばんは"); } } }, 13, // 初期値(時間) 0, // 初期値(分) true); timePickerDialog.show(); } ``` が現在のコードです。 このうち、条件分岐させるために、 ``` if(2<= hourOfDay <= 9) ``` としていますが、 ``` 演算子<=はboolean、intに適用できない ``` と表示されます。 そこで、もしかするとhourOfDayが文字型に変換されたと思ったので、 `Log.d("UI-PARTS", String.valueOf(hourOfDay) + ":" + String.valueOf(minute));`としましたが、意味はありませんでした。 もしかすると、型変換の関係でコンパイルエラーが発生していますか?
回答: `if(2<= hourOfDay && hourOfDay <= 9)`ですね。 左側から順に評価されるので、hourOfDayが2以上のとき`true <= 9`が評価されてしまっています。 **KSwordOfHasteさんから指摘を受けて** Javaはコンパイル言語なので、実際に実行する前に型のチェックが入ります。 ですので、『評価した結果エラー』と捉えられる文面は不明瞭で正確さに欠けますね。 コンパイラが事前に型チェックを行った結果、不正な比較が見つかりコンパイルエラーとなります。 (見つかり...?見なされ...?発覚し...?検知され...?どの表現が誤解がないのだろう...) コメントまで読んでいただくのが一番誤解がないかと思います。