JAVA基礎之程序流程控制:判斷結構

if語句:


第一種格式
if(條件表達式)
{
執行語句;
}
如果條件表達式結果爲true,則運行執行語句,如果爲false,則不運行。
例如:
*/
int a=4;
if (a>3)//條件表達式的結果爲true,所以會運行執行語句。
{
System.out.println("好久不見!");//這句是會被打印出來的。
//執行語句的大括號可以不寫,即便不寫,它也會默認執行離它最近的執行語句,剩下的不再執行。
}
/* 第二種格式
if (條件表達式)

執行語句;

else   else中文意爲否則。

執行語句;

如果條件表達式爲true,則運行第一條執行語句,如果結果爲false,則運行else下面那條執行語句。
 
*/
int b=4;
if (b<4)//表達式結果爲false,故第一條執行語句不再執行。
{
System.out.println("hello world");
}
else //執行這一句。
{
System.out.println("hello JAVA");
}
int c=5,d;
if (c>5)
{
d=900;
}
else
{
d=800;
}
System.out.println("d="+d);
//以上這種格式也是可以的,儘管d沒有初始化值,但是if語句必須執行一條,即d的值是可以賦予的。
//同時也可運用三元運算符寫出以上的這種語句。
d=c>5?900:800;//其實這個表達式也可看作上個表達式的簡寫。但是簡寫有侷限性。
//只有在if else語句有具體的結果時才能簡化寫成三元運算符,否則不能簡寫。
System.out.println("d="+d);


/*
if語句的第三種格式
if (條件表達式)

執行語句;

else if(條件表達式)

執行語句;



.......


else
{
執行語句;
}
如果第一個條件表達式結果爲true,則直接運行第一條執行語句,哪怕else if語句也滿足條件也不會執行。
因爲第一條滿足時代表整個if語句就已經運行結束了。
*/
int e=8;
if (e<2)//如果這裏結果爲true的話,則執行下面第一句執行語句,整個if語句結束。
//但是這裏爲false,則忽略這句,繼續向下運行。
{
System.out.println("你好。");
}
else if (e>9)//這裏還是爲false,繼續忽略,向下運行。
{
System.out.println("你好嗎?");
}
else if (e>10)//還是爲false,忽略,繼續向下。
{
System.out.println("你好,世界。");
}
else//上面全部爲false,就只運行這句。
{
System.out.println("你好,空間。");
}
//一個特別的舉例,搞懂if語句。
int f=8;
if (f<9)
{
System.out.println("hello");
}//這裏其實是單獨的一條if語句,條件表達式結果爲true,所以會被執行。
if (f>3)
{
System.out.println("hello。");
}//這是第二句,結果爲true,同樣會被執行。
if (f>10)
{
System.out.println("hello,JAVA");
}
else
{
System.out.println("hello,成都");
}//這裏是第三句,結果爲false,執行第二句。
/*
問題:上面總共是幾條if語句?哪些語句會被執行?
上面其實是三條語句,獨立來看的話,就很容易明白哪些會被執行。






注意:if語句是可以嵌套的。例如:
*/
int g=3,h=5;
if (g==2)//這裏判斷g是否等於2,結果是false,所以這裏不執行。
{
if (h==2)//這裏就是if語句的嵌套,但是上面的結果爲false,故這裏不執行。
{
System.out.println("hello world!");
}
else
{
System.out.println("hello yestoday!");
}
}
else//執行這裏的語句。
{
if (h==2)//進入嵌套的if語句,進行判斷。結果爲false,還是不執行。
{
System.out.println("hello powerPC");
}
else //執行這裏,所以最後只執行這裏的語句。 
{
System.out.println("hello Editplus");
}
}
/*有一點要記住,三種if語句格式 if else等關鍵詞後面是沒有分號;的。
一對大括號裏的代碼叫做局部代碼塊,它可以定義變量的生命週期。後期不用的變量我們應儘早
釋放,以節約內存空間,起到優化的作用。


if語句練習:
根據用戶給出的數據,判斷對應的星期。
判斷題會用到判斷結構,所以這題我們用if語句來運行。
寫if語句的第一個格式雖然也能完成,但是這樣的話每段代碼都會執行,浪費內存消耗。
同時他是個多判斷結構,那麼用第三種語句格式是最合理的。*/
int i=8;//定義i這個變量,這個數值是使用者輸入的,所以具體的值不確定。
if (i==1)
{
System.out.println("你輸入的日期是星期一。");
}
else if (i==2)
{
System.out.println("你輸入的日期是星期二。");
}
else if (i==3)
{
System.out.println("你輸入的日期是星期三。");
}
else if (i==4)
{
System.out.println("你輸入的日期是星期四。");
}
else if (i==5)
{
System.out.println("你輸入的日期是星期五。");
}
else if (i==6)
{
System.out.println("你輸入的日期是星期六。");
}
else if (i==7)//在星期以內的數字我們都一一對應,一旦結果爲true,就結束語句,不會消耗內存。
{
System.out.println("你輸入的日期是星期天。");
}
else //如果使用者錯誤輸入其他數據,我們沒有對應,結果自然會爲false,就只能執行這一句。
{
System.out.println("對不起,輸入錯誤。");
}
/*if語句練習二
季節練習,我們知道一年12個月,有4個季節。根據實際生活我們設定:
春季:3月,4月,5月。
夏季:6月,7月,8月。
秋季:9月,10月,11月。
冬季:12月,1月,2月。
使用者輸入相應的月份,我們輸出對應的季節。
首先,我們還是定義變量,假設爲使用者輸入的不確定的數值。*/
int j=8;
if (j>=3&j<=5)
{
System.out.println(j+"月是春季。");
}
else if (j>=6&j<=8)
{
System.out.println(j+"月是夏季。");
}
else if (j>=9&j<=11)
{
System.out.println(j+"月是秋季。");
}
else if (j<=12&j>=2)
{
System.out.println(j+"月是冬季。");
}
else 
{
System.out.println("對不起,沒有這個月份。");
}
/*以上這種用大小於等於限定範圍,&與符號連接的方式是可行的,但是要注意
java裏默認是從上到下的執行順序,如果我們把執行冬季的那條語句提到上面的話。
運行就會錯亂。
於是我們改良成另外一種方法*/
int j=8;
if (j<1||j>12)//這裏必須用或符號連接,因爲我們要排除1到12以外的數,沒有哪個數能滿足既小於1又大於12的。
{
System.out.println("對不起,沒有這個月份。");
}//這裏我們先排除以外的數,再在裏面做甄選。
else if (j>=6&j<=8)
{
System.out.println(j+"月是夏季。");
}//這裏排除的是6到8.
else if (j>=9&j<=11)
{
System.out.println(j+"月是秋季。");
}//這裏排除的是9到11.
else if (j>=3&j<=5)
{
System.out.println(j+"月是春季。");
}//這裏排除的是3到5.
else 
{
System.out.println(j+"月是冬季。");
}//剩下的自然就是12和1和2了。


//還有一種方法
int k=1;
if (k==3||k==4||k==5)
{
System.out.println(k+"月是春季。");
}
else if (k==6||k==7||k==8)
{
System.out.println(k+"月是夏季。");
}
else if (k==9||k==10||k==11)
{
System.out.println(k+"月是秋季。");
}
else if (k==12||k==1||k==2)
{
System.out.println(k+"月是冬季。");
}
else 
{
System.out.println("對不起,沒有這個月份。");
}
//這種用雙或的方式也是可行的,而且雙或還有個好處就是前面結果爲true時,後面直接短路。節省內存空間。
發佈了47 篇原創文章 · 獲贊 7 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章