一、選擇結構(6種)
1、單分支if語句
if(condition){
statements;
}
如果布爾表達式condition的值為真,則執行statements語句,否則轉到if結構后的語句執行。
例1
package com.baidu.czy; import java.util.Scanner; public class CheckNumber { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入一個整數:"); int num = sc.nextInt(); if (num % 5 == 0 && num % 6 == 0){ System.out.println(num + "能被5和6同時整除"); } if (num % 5 == 0 || num % 6 == 0){ System.out.println(num + "能被5或6整除"); } if (num % 2 == 0 ^ num % 6 == 0){ System.out.println(num + "只能被5或6整除"); } } }
2、雙分支if-else語句
例2
import java.util.Scanner; public class AdditionQuiz { public static void main(String[] args) { int number1 = (int)(Math.random()*10); // [0.0-1.0) int number2 = (int)(Math.random()*10); System.err.print(number1 + "+" + number2 +"="); Scanner input = new Scanner(System.in); int answer = input.nextInt(); if(answer ==(number1+number2)){ System.out.println("恭喜你,答對了!"); }else{ System.out.println("很遺憾,答錯了!"); System.out.println(number1 +"+"+number2 +"="+(number1+number2)); } } }
3、嵌套的if語句和多分支的if-else語句
例3
package com.baidu.czy; import java.util.Scanner; /* 1、成員變量:無需初始化。 成員變量無需初始化,系統在創建實例的過程中默認初始化。 補充:以final修飾的成員變量。必須顯性的初始化賦值。 2、 方法里面的形參變量: 無需初始化。 Java類方法,屬於按值傳遞機制,調用方法的時候,完成參數的傳遞,相當形參被初始化。 3、局部變量:必須初始化。 與成員變量不同,局部變量必須顯示初始化,才能夠使用。 */ public class ScoreLevel { public static void main(String[] args) { String level = null; Scanner sc = new Scanner(System.in); System.out.print("請輸入成績:"); double score = sc.nextDouble(); if (score > 100 || score < 0){ System.out.println("輸入成績不正確。"); }else if (score >= 90){ level = "優秀"; }else if (score >= 80){ level = "良好"; }else if (score >= 70){ level = "中等"; }else if (score >= 60){ level = " 及格"; }else { level = "不及格"; } System.out.println("你的成績等級為:" + level); } }
4、條件運算符
條件運算符是Java唯一的三元運算符
condition ? expression1 : expression2
如果condition為真,則執行expression1,否則執行expression2
5、switch語句結構
switch(expression){
case value1:
statements [break];
case value2:
statements [break];
. . . . . . . . ..
[default:
statements ]
}
注意:
(1)expression是一個表達式,它的值必須是byte、short、int、char、String、enum,同時expression類型必須與value的類型相匹配。
(2)break語句是可選項,計算expression的值與case的值進行匹配,若匹配,則執行case子句后面的語句,直到遇到break語句為止;
若都不匹配,則執行default語句塊;若既都不匹配又沒有default語句,則直接跳出switch結構。
例4
package com.baidu.czy; import java.util.Scanner; public class SwitchDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入年份:"); int year = sc.nextInt(); System.out.println("請輸入月份:"); int month = sc.nextInt(); int numDays = 0; switch (month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9:case 11: numDays = 30; break; case 2: if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){ numDays = 29; }else { numDays = 28; } break; default: System.out.println("月份非法"); break; } System.out.println("該月的天數為:"+numDays); } }
二、循環結構(4種)
1、while循環(“當循環”)
一般用在循環次數不確定的情況下
例
package com.baidu.czy; import java.util.Scanner; public class GuessNumber { public static void main(String[] args) { //隨機產生100~200的數 int magic = (int)(100 + Math.random() * 101); Scanner sc = new Scanner(System.in); System.out.println("請輸入你猜的數:"); int guess = sc.nextInt(); while (guess != magic){ if(guess > magic){ System.out.println("您猜大了"); }else { System.out.println("您猜小了"); } //進入到下一次 guess = sc.nextInt(); } System.out.println("恭喜你,答對了!\n該數是:"+magic); } }
2、do-while循環(“直到型”循環)
與while循環的區別是,do-while至少執行一次循環體。
例
import java.util.Scanner; public class DoWhileDemo { public static void main(String[] args) { double sum = 0,avg = 0; int n = 0; double number; Scanner input = new Scanner(System.in); do{ System.out.print("請輸入一個數(輸0結束):"); number = input.nextDouble(); if(number != 0){ sum = sum + number; n = n + 1; } }while(number!=0); avg = sum / n; System.out.println("sum = "+ sum); System.out.println("avg = "+ avg); } }
3、for循環
一般用在循環次數固定的情況下
例 打印九九乘法表
public class NineTable { public static void main(String[] args) { for(int i = 1; i < 10; i++){ for(int j = 1; j <=i; j++){ System.out.print(i +"*"+j + "="+i*j + " "); } System.out.println(); } } }
注意:for循環的一部分或全部可為空,但是分號不能省略。
如 for( ; ; ){
}
4、增強的for循環
主要用於對數組和集合元素的迭代
一般格式
for(type identifier: expression){
//循環體
}
該循環的含義:對expression(數組或集合)中的每個元素identifier,執行一次循環體中的語句。
type指數組或集合中的元素類型;expression必須是一個數組或集合的對象。
例如:用增強的 for循環實現求數組marks中各元素的和
double sum = 0;
for(double score:marks){
sum = sum + score;
}
使用增強型for循環的局限性:只能順序訪問數組或集合的元素。