- ベストアンサー
if文の初歩的な質問
if文の初歩的な質問なのですが、 if (a==1) c=10; else if (a==2) c=20; else if (a==3) c=30; System.out.println(c); この文のelseはなぜいるのでしょうか?どちらでも良いのでしょうか? 基本のルールとしては、elseが付くのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
処理結果は変わらないかもしれません。 しかし,elseがある場合でaが1だった場合はif文による評価は最初の1回で終わりですが,elseがないと残りのif文がすべて無駄に実行されて処理が終了するのが少し遅くなるでしょう。
その他の回答 (4)
- Yanch
- ベストアンサー率50% (114/225)
フローチャートにおこしてみると、 elseを付ける場合と、付けない場合の、処理の流れが違う事が確認出来ると思いますよ。 >この文のelseはなぜいるのでしょうか?どちらでも良いのでしょうか? >基本のルールとしては、elseが付くのでしょうか? else if を使うか、使わないかは、その記述する処理によりますから、 一概には言えませんが、アルゴリズムが分かってくると、 else ifの使用が必要か、必要でないかもわかってくると思います。
お礼
返答ありがとうございます。フローチャートですか。 やはり基本的なことを学習していくことが面倒でも近道なのかもしれません。
- koko_u_
- ベストアンサー率18% (459/2509)
>この文のelseはなぜいるのでしょうか?どちらでも良いのでしょうか? 当然、ケースバイケースです。 >基本のルールとしては、elseが付くのでしょうか? 常に必要かどうかを考えるのが正しい態度です。 ヒントとしては、ない場合にどうなるかを考えましょう。 今のケースだと、a が 4 の場合に c の値がどうなるのか、 このコードの断片だけでは不明なため、else が必要そうです。 より正しいのは if 文そのものを書かずに c = a * 10; などとすることですが。
お礼
返答ありがとうございます。様々な回避の方法もありそうですね。
- jqp
- ベストアンサー率36% (4/11)
おなじ、違うとしたらこんなときでは a=1; b=2; if(a==1) c=10; else if(b==2) c=20; このcは10になるですが、elseがないと20になる
お礼
返答ありがとうございます。条件次第では違ってくるんですね。
- sho5296
- ベストアンサー率0% (0/1)
ifを「もし」と置き換えるとすると elseは「それ以外」という意味になります 具体的用法は ○以上○以下のとき×× それ以外で○以上○以下×× さらにそれ以外のとき×× のような感じです。 この文の場合、 aが範囲(複数)ではなくひとつに指定されているため elseはなくても正常に動作すると思います しかし基本的なルールとしてはelseがあるほうが正しいということに なるのではないでしょうか 一高校生の意見なのであまり参考にはならないと思いますが…
お礼
返答ありがとうございます。高校生でプログラミングの知識は素晴らしいですね。
お礼
返答ありがとうございます。 なるほど!それは是非付けた方がよさそうですね。