Discussion:
?:運算子的用法
(时间太久无法回复)
~重享榮耀~
2006-10-03 15:37:29 UTC
Permalink
int score;
String finalScore;
score=100;

if (score >=90 && score<=100)
finalScore= "甲";
else if (score >=80 && score<90)
finalScore= "乙";
else if (score >=70 && score<80)
finalScore= "丙";
else if (score >=60 && score<70)
finalScore= "丁";
else
finalScore= "戊";

請問~以上的程式~~我能用
?: <---這個運算式來完成嗎??

--
◎龍貓資訊天地(bbs.mgt.ncu.edu.tw)
◎[vrgigi]From: 218-160-86-163.dynamic.hinet.net
小安
2006-10-03 15:45:55 UTC
Permalink
【 在 ***@bbs.mgt.ncu.edu.tw (~重享榮耀~) 的大作中提到: 】
: int score;
: String finalScore;
: score=100;
: if (score >=90 && score<=100)
: finalScore= "甲";
: else if (score >=80 && score<90)
: finalScore= "乙";
: else if (score >=70 && score<80)
: finalScore= "丙";
: else if (score >=60 && score<70)
: finalScore= "丁";
: else
: finalScore= "戊";
: 請問~以上的程式~~我能用
: ?: <---這個運算式來完成嗎??

我不確定你這個是不是作業 (雖然說出這種作業也實在太.....)
所以說我只點一下,
你可以嘗試看看 巢狀 的 ? 運算子

---
什麼叫巢狀

這就叫巢狀了:
if(xxx){
if(yyy){
//zzz;
}
}
--
NPDA - Non-deterministic PushDown Automata
(不確定是否推倒自動機)
DPDA - Deterministic PushDown Automata
(確定會推倒自動機)

得証: DPDA 效率比較高

※ 來源:‧資訊傳奇 inf.csie.thu.edu.tw‧[FROM: 59-126-173-31.HINET-IP.hinet.n]
~重享榮耀~
2006-10-04 01:07:20 UTC
Permalink
==> ***@inf.csie.thu.edu.tw (小安) 提到:
: 【 在 ***@bbs.mgt.ncu.edu.tw (~重享榮耀~) 的大作中提到: 】
: : int score;
: : String finalScore;
: : score=100;
: : if (score >=90 && score<=100)
: : finalScore= "甲";
: : else if (score >=80 && score<90)
: : finalScore= "乙";
: : else if (score >=70 && score<80)
: : finalScore= "丙";
: : else if (score >=60 && score<70)
: : finalScore= "丁";
: : else
: : finalScore= "戊";
: : 請問~以上的程式~~我能用
: : ?: <---這個運算式來完成嗎??
: 我不確定你這個是不是作業 (雖然說出這種作業也實在太.....)
: 所以說我只點一下,
: 你可以嘗試看看 巢狀 的 ? 運算子
: ---
: 什麼叫巢狀
: 這就叫巢狀了:
: if(xxx){
: if(yyy){
: //zzz;
: }
: }
?:運算子~~
書上面沒有巢狀結構~
網路上也沒看到有人用
?:弄成巢狀~~
好難喔

--
◎龍貓資訊天地(bbs.mgt.ncu.edu.tw)
◎[vrgigi]From: 218-160-84-224.dynamic.hinet.net
._.
2006-10-03 17:54:01 UTC
Permalink
※ 引述《***@bbs.mgt.ncu.edu.tw (~重享榮耀~)》之銘言:
: ?:運算子~~
: 書上面沒有巢狀結構~
: 網路上也沒看到有人用
: ?:弄成巢狀~~
: 好難喔

System.out.println(1>2?3:(4>5?6:7));

書本來就不會全部都教.

網路上沒人用, 在這件事情上有兩種狀況.
1.你碰巧沒看到
2.不好維護所以不用

自己把 1234567 跟 > 換別的東西玩看看, 順序調動看看,
看看你自己對這種巢狀有沒有感覺.
如果這個都覺得很難... (畫十字)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
~重享榮耀~
2006-10-04 01:51:38 UTC
Permalink
==> vrgigi (~重享榮耀~) 提到:
: ==> ***@inf.csie.thu.edu.tw (小安) 提到:
: : 【 在 ***@bbs.mgt.ncu.edu.tw (~重享榮耀~) 的大作中提到: 】
: : 我不確定你這個是不是作業 (雖然說出這種作業也實在太.....)
: : 所以說我只點一下,
: : 你可以嘗試看看 巢狀 的 ? 運算子
: : ---
: : 什麼叫巢狀
: : 這就叫巢狀了:
: : if(xxx){
: : if(yyy){
: : //zzz;
: : }
: : }
: ?:運算子~~
: 書上面沒有巢狀結構~
: 網路上也沒看到有人用
: ?:弄成巢狀~~
: 好難喔
找到了~~原來?:也可以這樣寫
呵呵
System.out.println((score>=90 && score<=100)?"甲":
((score>=80 && score<=90)?"乙":
((score>=70 && score<=80)?"丙":
((score>=60 && score<=70)?"丁":"戊" ))));

--
◎龍貓資訊天地(bbs.mgt.ncu.edu.tw)
◎[vrgigi]From: 218-160-84-224.dynamic.hinet.net
windf4
2006-10-04 02:04:09 UTC
Permalink
※ 引述《***@bbs.mgt.ncu.edu.tw (~重享榮耀~)》之銘言:
: 找到了~~原來?:也可以這樣寫
: 呵呵
: System.out.println((score>=90 && score<=100)?"甲":
: ((score>=80 && score<=90)?"乙":
: ((score>=70 && score<=80)?"丙":
: ((score>=60 && score<=70)?"丁":"戊" ))));

判斷式其實不用那麼長

if( score >= 90 && score <= 100 ) // 90 <= score <= 100
else if( score >= 80 ) // score < 90 恆成立

所以用 ?: 的可以把條件簡化成

(score >= 90 && score <= 100)?"甲":
((score >= 80)?"乙":
((score >= 70)?"丙":
((score >= 60)?"丁":"戊")));

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.231.76.19
p***@kkcity.com.tw
2006-10-05 02:26:57 UTC
Permalink
Post by windf4
: 找到了~~原來?:也可以這樣寫
: 呵呵
: ((score>=60 && score<=70)?"丁":"戊" ))));
判斷式其實不用那麼長
if( score >= 90 && score <= 100 ) // 90 <= score <= 100
else if( score >= 80 ) // score < 90 恆成立
所以用 ?: 的可以把條件簡化成
((score >= 60)?"丁":"戊")));
原先的寫法,更具可讀性,也較直覺。
經 javac 編譯後的 bytecode,
效益上沒有明顯差異!
--
┌─────◆KKCITY◆─────┐  KKBOX◤歌名╱歌手╱歌詞╱專輯◢搜尋 
│ bbs.kkcity.com.tw │   ★ http://www.kkbox.com.tw ★
└──《From:211.75.42.221 》──┘ 超過80家唱片公司合法授權 音樂盡情下載
--
windf4
2006-10-05 02:21:22 UTC
Permalink
※ 引述《***@kkcity.com.tw ( )》之銘言:
: ※ 引述《***@ptt.cc (windf4)》之銘言:
: > 判斷式其實不用那麼長
: > if( score >= 90 && score <= 100 ) // 90 <= score <= 100
: > else if( score >= 80 ) // score < 90 恆成立
: > 所以用 ?: 的可以把條件簡化成
: > (score >= 90 && score <= 100)?"甲":
: > ((score >= 80)?"乙":
: > ((score >= 70)?"丙":
: > ((score >= 60)?"丁":"戊")));
: 原先的寫法,更具可讀性,也較直覺。
: 經 javac 編譯後的 bytecode,
: 效益上沒有明顯差異!

兩者只差在少一個大小判斷,效益差異不大是可預期的;

至於可讀性,如果單就這個例子而言,兩者的差異也不會

大到哪去,加行〔按分數區分等第〕的註解,依從小就接

觸到大、對等第劃分的理解來說也就夠了。

用不必要的判斷式來增加程式的可讀性、直覺性我覺得不

妥,這交給註解來就好,畢竟註解的作用之一就是用來說

明增加可讀性用的。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.231.76.67
p***@kkcity.com.tw
2006-10-08 05:04:08 UTC
Permalink
Post by windf4
: 原先的寫法,更具可讀性,也較直覺。
: 經 javac 編譯後的 bytecode,
: 效益上沒有明顯差異!
兩者只差在少一個大小判斷,效益差異不大是可預期的;
至於可讀性,如果單就這個例子而言,兩者的差異也不會
大到哪去,加行〔按分數區分等第〕的註解,依從小就接
觸到大、對等第劃分的理解來說也就夠了。
用不必要的判斷式來增加程式的可讀性、直覺性我覺得不
妥,這交給註解來就好,畢竟註解的作用之一就是用來說
明增加可讀性用的。
嗯嗯,寫註解的確是好習慣!

但是呢,如果能堅持 "程式本身就是最好的註解" 的原則,
應該會在程式設計這一行業,走得順利一些吧!
--
┌─────◆KKCITY◆─────┐ ◢ ╱  想要成立班系社團站台嗎? 
│ bbs.kkcity.com.tw │ █▉ ─ KKcity即日起開放BBS站申請囉!
└──《From:61.224.143.133 》──┘ ◥ ╲ 免程式技術、硬體成本的選擇!!
--

Loading...