書いた通りにプログラムは実行されています
(int)Math.floor(Math.random()* 20); の部分が質問にあるように0だったと仮定します。
java
1a=0;
2//System.out.println("1月生まれは"+ a +"です");
3// a を 0に置き換える
4System.out.println("1月生まれは"+ 0 +"です");
5if(a == 0){
6// a==0 なので、下の行が実行される
7System.out.println("ターニングポイントの日です。今までのことを振り返り、未来に生かしてください。");
その結果、以下のように実行したのと同じものです
java
1System.out.println("1月生まれは0です");
2System.out.println("ターニングポイントの日です。今までのことを振り返り、未来に生かしてください。");
3
結論としては、
~~ランダムで取得した数字が反映されません。~~ではなく、
ランダムで取得した数字は反映されており、書いた通りにプログラムは実行されています。
勘違いしていそうなところ
java
1if(a == 0){
2System.out.println("ターニングポイントの日です。今までのことを振り返り、未来に生かしてください。");
3
の結果で、aの中身が置き換わると勘違いしていて、その結果
System.out.println("1月生まれは"+ a +"です");
で、期待するような出力がされると思っているかもしれませんが、
以下の理由で期待した通りには動きません
- if文で判定しただけでaが書き換わるようなものではない。
- System.out.printlnは、画面出力するもので、aが書き換わるものではない。
- そもそも、aが0の時点で、System.out.printlnしているので、"1月生まれは0です"が出力される
仮に、aの中身を変更したとしても(※ありえないが)出力されるのは、
※a は long
なので、String
が格納されることはない
「1月生まれはターニングポイントの日です。今までのことを振り返り、未来に生かしてください。です」
「1月生まれはターニングポイントの日です。今までのことを振り返り、未来に生かしてください。」
と、末尾に余計な”です”がつくので、期待した通りにはなりません。
どう修正するかは、全体像がわからないので想像ですが
System.out.println("1月生まれは"+ a +"です");
の部分を
System.out.print("1月生まれは");
に、すればよいかもしれません。
※printとprintlnの違いについては、説明しません(調べればすぐにわかります)