一、程序邏輯
分類
- 順序結(jié)構(gòu)
- 分支結(jié)構(gòu)(選擇結(jié)構(gòu))
- 循環(huán)結(jié)構(gòu)
二、選擇結(jié)構(gòu)
if語句
語法格式:
if(判斷條件)
{
語句1
...
語句2
}
if...else語句
語法格式:
if(條件表達式)
{
語句1
}else
{
語句2
}
例:


if...else if...else語句(“隨意”嵌套)
例子:


多重選擇——switch語句
條件:
嵌套的if語句比較復(fù)雜,if與else容易配對錯誤,這樣就可以使用switch語句來處理。
switch結(jié)構(gòu)為“多路選擇結(jié)構(gòu)”,switch語句也叫開關(guān)語句,在許多不同的語句組之間做出選擇。
格式:
switch (表達式)
{
case 常量選擇值1:語句體1{break;}
case 常量選擇值2:語句體2{break;}
......
case 常量選擇值n:語句體n{break;}
default:默認語句體{break;}
}
注意:
switch的表達式類型為整型(包括byte、short、char、int等)、字符類型以及枚舉類型。
在JDK1.7之后,switch語句增加了對String類型的支持。
例子1:
public class TestFinal4_1 {
public static void main(String[] args) {
int a = 100;
int b = 7;
char oper = '*';
switch (oper)//用switch實現(xiàn)多分支語句
{
case '+':
System.out.println(a+"+"+b+"="+(a+b));
break;
case '-':
System.out.println(a+"-"+b+"="+(a-b));
break;
case '*':
System.out.println(a+"*"+b+"="+(a*b));
break;
case '/':
System.out.println(a+"/"+b+"="+((float)a/b));
break;
default:
System.out.println("未知的操作!");
break;
}
}
}

例子2:
public class TestFinal4_1 {
public static void main(String[] args) {
int year = 2000;
int month = 3;
int day = 24;
int daySum = 0;
for (int i = 1;i<month;i++){
switch (i){
case 1:
daySum += 31;
break;
case 3:
daySum += 31;
break;
case 4:
daySum += 30;
break;
case 5:
daySum += 31;
break;
case 6:
daySum += 30;
break;
case 7:
daySum += 31;
break;
case 8:
daySum += 31;
break;
case 9:
daySum += 30;
break;
case 10:
daySum += 31;
break;
case 11:
daySum += 30;
break;
case 2:
if(((year % 4 == 0) & (year % 100 != 0)) | (year % 400 == 0)){
daySum+= 29;
}else {
daySum +=28;
}
}
}
int result=daySum+day;
System.out.println("今天是:"+year+"年的第"+result+"天");
}
}

三、循環(huán)結(jié)構(gòu)
while循環(huán)
例子:


do...while循環(huán)
語句格式:
do {
語句1;
語句2;
...
語句n;
}while (判斷條件);
例子:


拓展:
do...while循環(huán)不管條件是什么,都是先做再說,因此循環(huán)的主體至少會被執(zhí)行一次。日常生活中,也有do...while語句的例子,例如在利用提款機提款時,會先進入輸入密碼的畫面,讓使用者輸入三次密碼,如果皆輸入錯誤嗎,即會將銀行卡吞掉。其程序的流程就是利用do...while循環(huán)設(shè)計的。
for循環(huán)
例子:


foreach循環(huán)
例子1:


例子2:


對比例子1與例子2:
使用foreach遍歷數(shù)組元素,其形式更加簡潔明了。
所有的foreach均可用傳統(tǒng)的for循環(huán)模式代替。由于foreach循環(huán)會丟失元素的下標信息,當遍歷集合或數(shù)組時,如果需要集合或數(shù)組元素的時候,建議使用傳統(tǒng)for循環(huán)方式。
循環(huán)嵌套(循環(huán)中有循環(huán))
例子:

output:乘法口訣表
四、循環(huán)的跳轉(zhuǎn)
break語句
- 不帶標簽的break
例子:


- 帶標簽的break
定義:
不帶標簽的break只能跳出包圍它的最小代碼塊,如果想跳出包圍它的更外層的代碼塊,就可以使用帶標簽的break語句。
語法格式:
break 標簽名;
例子:


對比:如果不加break loop這個語句,結(jié)果如下:

自我理解:帶標簽的break就是講那個循環(huán)不當做循環(huán)看,那個循環(huán)只執(zhí)行一次!
continue語句
- 不帶標簽的continue語句
例子:


- 帶標簽的continue語句
定義:
和break語句一樣可以和標簽搭配使用,其作用也是跳出深度循環(huán)。
語法格式:
continue 標簽名;
例子:


對比:如果不加continue loop這個語句,結(jié)果如下:

return語句
例子:


這里為什么沒有輸出最后一句“循環(huán)結(jié)束:i=10”?
return語句的作用是結(jié)束本方法,對于這個程序而言相當于結(jié)束程序,所以當執(zhí)行return語句之后程序就結(jié)束了,自然無法輸出最后一句代碼了。
五、重點
- 三元運算符就相當于if...else語句,只不過三元運算符有返回值。為了程序的清晰明了,只有在if...else語句的主題部分很少時才使用三元運算符。
- switch中并不是每個case后面都需要break語句
在某些情況下,在switch結(jié)構(gòu)體中,可以有意的減少一些的特定位置的break語句,這樣可以簡化程序。 - 循環(huán)的區(qū)間控制
一般我們使用for(int i = 0;i<10;i++)
而不是for(int i = o;i<=9;i++)