JAVA新手教學-3 運算子與簡易if指令

上一篇文章中實作了簡單的加法計算器,可是平常在使用的計算機可不只會加法。我們現實生活中的數學有非常多複雜的公式,這些公式是由許多運算子結合而成的,今天來教大家除了加法以外的運算式以及簡易if指令。


Arithmetic(算數):

-運算子(operator)

乘法運算子 *  (左數*右數)

除法運算子 /  (左數/右數)

餘數運算子 % (左數/右數餘剩多少)

加減法運算子 +(左數+、-右數)

-java視兩整數相除整數小數部分無條件消去。ex.7/5計算結果為1,不是1.4。

%計算兩整數相除所得整數餘數。ex.7%5計算結果為2。

 

運算子優先性:

-部分算術運算子的計算較其他運算子優先執行,但使用括弧可以強制低順位運算子先執行。

 

 

 

變數自我相乘、相加、相減、相除:

上一個章節有提到”=”的意義是把右邊的值複製給左邊,假設現有一個變數a,其值為10。我們像要讓a變成100該怎麼做呢?這時候有沒有理解”=”的意義就非常重要,我們想要更改a的值,那麼a就會在=左邊,右邊就會是100那麼語法就是【a=100;】,=右邊可以用運算式代替,像是a*10或是a+90,語法分別是【a=a*10;】、【a=a+90;】。這時候新的a的值就會是100。

 

通常工程師都很懶惰,所以有更簡潔的寫法,【a=a*10;】變成【a*=10;】,【a=a+90;】變成【a+=90;】,執行結果不會變。

接著來探討變數除以0會發生甚麼事呢?根據被除數的型別會得到不同的結果。例如int型別變數除以0會出現程式錯誤,不管是1/0、0/0都會出現程式錯誤。

 

接著來看看浮點數型別變數除以0會發生甚麼吧!居然出現了【Infinity】─無限,為甚麼會這樣呢?原因因為java的float型別和double型別使用了IEEE 754 標準(二進位浮點數算術標準),其規定為浮點數除以0等於正無窮或負無窮


 

那麼浮點數的0.0/0.0會發生甚麼事呢?執行完畢後出現了【NaN】,全名為Not a Noumber。在Java定義裡0.0/0.0就是所謂的非數。

 

 

if指令:

-語法

-if為控制選擇性執行的指令。

-如果判斷條件為true,則執行程式段(大括號)內的程式碼,若只有一條指令可以不加大括號。若判斷條件為false則跳過不執行。

-無論if內的指令執行與否,都會接著if後的指令繼續執行。

-判斷條件由相等(equality,==)或關係運算子組成。

-if判斷式後不用加分號

 

 

判斷條件:

-任何可以計算或判斷出true 或false的運算式都可以作為判斷式來使用,注意!!!!=】、【>=】、【<=順序不可以反過來

 

接下來來練習一下看看你是否搞懂了運算子的關係式。

int a=10;
int b=20;
int c=b=a;
c*=c;

試問c最後式多少?

答案是100,你對了嗎?下圖為執行順序與記憶體的關係。

 

 

如果再結合if判斷式的話會怎麼樣呢?在【c*=c;】加上兩行if判斷式【if(c==100){程式碼}】,【if(c!=100){程式碼}】,結果會如何呢?

 

 

因為c的值是100,所以第一個判斷式為true,會執行程式段內的指令。執行完畢會跳下一行程式碼,也就是第二個判斷式,因為c為100,其判斷結果為false,所以不會執行程式段裡的程式碼。

 

 

除了最基本的if指令以外還有else if以及else,這三個指令如何運用呢?紅框框的else if可以根據判斷式的多少決定需要加幾個。最後一個判斷式直接打else,不需要加判斷條件。

 

 

如果我是一個老師,我今天要把學生的成績分等級,我該怎麼做?今天有一位學生的成績是61,要怎麼分級呢?我們把成績分成三個等級,分別是【很棒】、【及格】、【不及格】,接下來用if else等指令判斷分數的區間給予相應的等級,如下圖。

 

 

if指令有相當多的衍生寫法,這些會等大家更加熟悉基礎語法再做說明,下一期會教大家列印指令的變化版本。

肥柴
肥柴
文章: 30

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料