- - PR -
条件演算子について
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-12 16:09
こんにちは、茲茲です。
まだJava初心者の茲茲ですが、 会社の研修のテキストに以下のコードがありました。 //Sample8.java import java.io*; class Sample8{ public static void main(String[] args){ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); /* 中略 */ String str = br.readLine(); int re = Integer.parseInt(str); /*↓ここです!*/ char answer = (res == 1) ? 'A' : 'B'; System.out.println(answer); } } 上記の、/*↓ここです!*/の直下のコードは、IF文の代わり で使えますが、一緒に勉強している同僚が、 「これで、switch文みたいものつくれるんじゃない?」 といっていたのですが、 そんな事は可能でしょうか? 是非、教えてください。 お願いします。 | ||||||||
|
投稿日時: 2003-12-12 16:15
あなたから見て、どういうものは「switch 文みたいなもの」ですか? | ||||||||
|
投稿日時: 2003-12-12 16:21
この人は聞いてるんだってば。
おそらくこんな感じかと。 char answer = (res == 1) ? 'A' : (res == 2) ? 'B' : (res == 3) ? 'C' : (res == 4) ? 'D' : -1; でも「:」しか似てないですね。もっとそれっぽくかける方法があるのかな? | ||||||||
|
投稿日時: 2003-12-12 16:34
茲茲さんが求めているものがわからなければ、ちゃんと答えられないと思うが如何?
if-else にしか見えない(と思う人もいるでしょ?) | ||||||||
|
投稿日時: 2003-12-12 16:35
Anthyhimeさん、どうもありがとうございます。 早速、同僚にこのコードを教えます。 | ||||||||
|
投稿日時: 2003-12-12 16:41
こんな書き方見たこと無いんですけどねえ、、、 まあ、「出来るか出来ないか」ではなくて「他人が読んでも分かり易いか」を 心がけて書かれるほうが良いと思いますよ。この書き方するんだったら、 迷わずswitch文で書くべきだと思いますが。 こういうこともできるね | ||||||||
|
投稿日時: 2003-12-12 16:55
私の手元にあるコーディング規約(C++向け)にif-elseやswitchよりも、 このイディオムを優先して使うべきと書いてあるものがあります。 ((((;゚Д゚)))ガクガクブルブル 理由は、 不用意に処理の経路を増やさないため、品質、メンテナンス性が向上する。 とのことです。 幸いにも、これを遵守している人はまだ見たこと無いですが...。 | ||||||||
|
投稿日時: 2003-12-12 17:15
半導体関連でデバイスのFWでCを呼んでいると当たり前のようにこの手の書き方がでてきています・・・。
ITの世界ではほとんどこの手のコードを少しでも縮めるような書き方はみないですね・・・。容量に制限がないからなのか。でも?を使用したところで、そんなに簡潔に書けるのかといった感じも受けられますけどね。 | ||||||||
