- PR -

条件演算子について

投稿者投稿内容
茲茲
会議室デビュー日: 2003/11/11
投稿数: 7
投稿日時: 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/06/05
投稿数: 163
投稿日時: 2003-12-12 16:15
引用:

茲茲さんの書き込み (2003-12-12 16:09) より:
「これで、switch文みたいものつくれるんじゃない?」
といっていたのですが、
そんな事は可能でしょうか?



あなたから見て、どういうものは「switch 文みたいなもの」ですか?
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2003-12-12 16:21
この人は聞いてるんだってば。

おそらくこんな感じかと。
char answer =
  (res == 1) ? 'A' :
  (res == 2) ? 'B' :
  (res == 3) ? 'C' :
  (res == 4) ? 'D' :
  -1;

でも「:」しか似てないですね。もっとそれっぽくかける方法があるのかな?
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2003-12-12 16:34
引用:

Anthyhimeさんの書き込み (2003-12-12 16:21) より:
この人は聞いてるんだってば。



茲茲さんが求めているものがわからなければ、ちゃんと答えられないと思うが如何?

引用:

おそらくこんな感じかと。
char answer =
  (res == 1) ? 'A' :
  (res == 2) ? 'B' :
  (res == 3) ? 'C' :
  (res == 4) ? 'D' :
  -1;



if-else にしか見えない(と思う人もいるでしょ?)
茲茲
会議室デビュー日: 2003/11/11
投稿数: 7
投稿日時: 2003-12-12 16:35
引用:

Anthyhimeさんの書き込み (2003-12-12 16:21) より:
この人は聞いてるんだってば。

おそらくこんな感じかと。
char answer =
  (res == 1) ? 'A' :
  (res == 2) ? 'B' :
  (res == 3) ? 'C' :
  (res == 4) ? 'D' :
  -1;

でも「:」しか似てないですね。もっとそれっぽくかける方法があるのかな?



Anthyhimeさん、どうもありがとうございます。
早速、同僚にこのコードを教えます。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-12 16:41
引用:

早速、同僚にこのコードを教えます。


こんな書き方見たこと無いんですけどねえ、、、
まあ、「出来るか出来ないか」ではなくて「他人が読んでも分かり易いか」を
心がけて書かれるほうが良いと思いますよ。この書き方するんだったら、
迷わずswitch文で書くべきだと思いますが。

こういうこともできるね!というお遊び的感覚で友達と知識を共有するならグーです
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2003-12-12 16:55
引用:

おばけさんの書き込み (2003-12-12 16:41) より:
こんな書き方見たこと無いんですけどねえ、、、
まあ、「出来るか出来ないか」ではなくて「他人が読んでも分かり易いか」を
心がけて書かれるほうが良いと思いますよ。この書き方するんだったら、
迷わずswitch文で書くべきだと思いますが。


私の手元にあるコーディング規約(C++向け)にif-elseやswitchよりも、
このイディオムを優先して使うべきと書いてあるものがあります。 ((((;゚Д゚)))ガクガクブルブル
理由は、
不用意に処理の経路を増やさないため、品質、メンテナンス性が向上する。
とのことです。

幸いにも、これを遵守している人はまだ見たこと無いですが...。
begood
ベテラン
会議室デビュー日: 2003/09/12
投稿数: 97
お住まい・勤務地: とうきょー
投稿日時: 2003-12-12 17:15
半導体関連でデバイスのFWでCを呼んでいると当たり前のようにこの手の書き方がでてきています・・・。

ITの世界ではほとんどこの手のコードを少しでも縮めるような書き方はみないですね・・・。容量に制限がないからなのか。でも?を使用したところで、そんなに簡潔に書けるのかといった感じも受けられますけどね。

スキルアップ/キャリアアップ(JOB@IT)