質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

2197閲覧

Opatator <= cannot be applied to 'boolean','int'

begin1990

総合スコア31

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/11/23 09:47

現在、Android Studioでアプリを作成しています。

private void showTimePickerDialog() { TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { //Log.d("UI-PARTS", String.valueOf(hourOfDay) + ":" + String.valueOf(minute)); TextView textView = (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));としましたが、意味はありませんでした。

もしかすると、型変換の関係でコンパイルエラーが発生していますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

if(2<= hourOfDay && hourOfDay <= 9)ですね。
左側から順に評価されるので、hourOfDayが2以上のときtrue <= 9が評価されてしまっています。

KSwordOfHasteさんから指摘を受けて
Javaはコンパイル言語なので、実際に実行する前に型のチェックが入ります。
ですので、『評価した結果エラー』と捉えられる文面は不明瞭で正確さに欠けますね。

コンパイラが事前に型チェックを行った結果、不正な比較が見つかりコンパイルエラーとなります。
(見つかり...?見なされ...?発覚し...?検知され...?どの表現が誤解がないのだろう...)

コメントまで読んでいただくのが一番誤解がないかと思います。

投稿2017/11/23 09:49

編集2017/11/23 10:43
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

begin1990

2017/11/23 09:57

ありがとうございました。 おかげで解決できました。
KSwordOfHaste

2017/11/23 09:59

>「が評価されてしまっています。」 この表現はインタープリタ言語ならよいと思うのですが、Javaはコンパイラー言語ですのでhourOfDayが2以上がどうかに関係なく、「コンパイル時にbooleanとintは比較できないとみなす」といった表現の方がよいと思います。 細かい点で恐縮です。
LouiS0616

2017/11/23 10:04

おっしゃる通りだと思います。ちょっと表現を考え直してみます。
KSwordOfHaste

2017/11/23 10:13

「左側から順に評価される」という元の説明がわかりやすいと思いましたので 「((2 <= hourOfDay) <= 9)となるのです」 みたいな説明でも案外伝わる気がしました。
LouiS0616

2017/11/23 10:43

ちょっと私の日本語が迷子になってしまったので、コメントを見る旨だけ追記しておきます。 ご指摘ありがとうございます、今後ともよろしくお願いします。
KSwordOfHaste

2017/11/23 10:43

> どの表現が誤解がないのだろう... いずれも誤解はないと思います! 対応いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問