2019年06月08日

int型とdouble型、型が一致しない計算はdouble型が優先される/double型をint型にキャストした場合小数点以下は切り捨てされる

このコードの結果について。

class Nifa {
public static void main(String[] args){
int month = 9;
String japaneseMonth = "";
String quarter ="";
if(month == 9){
japaneseMonth = "長月";
} else if (month >= 7 && month <= 9){
quarter = "第二四半期";
}
System.out.println(japaneseMonth + "" + quarter);
}
}

答えろという問題、判らない…まず不明な記号が多すぎる。
ので、調べることになった。まず"&&"について。
これは論理演算子らしい、論理積、とか呼ばれてる。
右辺も左辺もtrueの時はtrue、どちらかでもfalseだったらfalseとか。
==”は確か代入だったような…違った、代入演算子が"="で、ダブルイコールは等価演算子。

これで結果が判る。まずmonth変数にはint型、整数の9が入る。
ただ、初期化してるかこれ…いや、変数を宣言して初期化するのと値を代入するのは、同時かつ一文で出来ることが、


で説明されてる。
だからmonthは9で間違いない。
String型のjapaneseMonth、quarterは、最初は""で、何も値が入ってないが。
monthに9が入っているという条件下の時は、japaneseMonthに"長月"という文字列が入る。
もしmonthに7以上9以下…int型だから、小数点が入ることはない・・・か、恐らく。

monthは9が入ってて、それ以外の値が入れられることはないから、else ifの条件指定の無意味。
monthが9の時は、変数japaneseMonthとquarterに、それぞれ指定の文字列が入る。
だから答えは「長月 第二四半期」になる。

あっ、違った。


で書いてる、&&は「かつ」を示す条件演算子だと。
monthの値は9だから、それ以外の値が入ることはあり得ない。そんな条件は記述されてない。


に書いてる。if文を抜けるってことだ、else if文に入らずに。
だから答えは「長月」だけってか。


を、ちゃんと読んどかないとな…。

ちなみにクラス名にしたNifaってのは、進撃の巨人 Season3を観てて出てきたキャラクター。
であり、お風呂サイドワゴンにも同じのがあるみたい。
聖愛中学高等学校のJava講座、判りやすいから読んでみるか、また。https://seiai.ed.jp/sys/text/java/
posted by DJしかばね at 21:59 | Comment(0) | Java学習 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。