2013-02-01 108 views
-2

這裏印刷是我的代碼:使用三元運算符,而在Perl

for($i=1;$i<=100;$i++){ 
    if($i%15==0) print "Divisible by 15"; 
    else if($i%5==0) print "Divisible by 5"; 
    else print ($i%3==0)? "Divisible by 3":$i; 
    print "\n"; 
} 

它的一個非常簡單的代碼。我在Java中使用它,但它在Perl中給出了一個錯誤。錯誤是:

syntax error at line 2, near ") print" 
Execution aborted due to compilation errors. 

我是新來的Perl。我怎樣才能使它工作?

+1

要避免fence錯誤,請使用'for $ i(1..100)'。 – choroba

+0

try:else {$ s =($ i%3 == 0)? 「xyz」:$ i} – quicoju

+0

回滾了額外的問題,因爲用戶似乎已經開始了一個新的問題:http://stackoverflow.com/questions/14651297/condition-in-ternary-operator-doesnt-cause -any-change – ysth

回答

7

試試這個版本:

for($i=1;$i<=100;$i++){ 
    if ($i%15==0) { print "Divisible by 15" } 
    elsif($i%5==0) { print "Divisible by 5" } 
    else { print +($i%3==0)? "Divisible by 3":$i; } 
    print "\n"; 
} 

您需要添加括號周圍的if語句則一部分,並使用elsif,而不是else if

沒有在print聲明+,perl的分析語句爲:

print(...) ? "Divisible by 3" : $i; 

即。它將使用print返回的值作爲三元運算符的第一個參數。另一種解決方案是編寫:

else { print($i % 3 == 0 ? "..." : $i) } 
+0

+1圓括號中的優點與預期方式不同。 –

+0

請看我編輯的問題。你的建議工作正確,但我還有一點小小的懷疑。 – xan