一 循環嵌套
嵌套循環是指在一個循環語句的循環體中再定義一個循環語句的語法結構。while、do…while、
for循環語句都可以進行嵌套,並且它們之間也可以互相嵌套,如最常見的在for循環中嵌套for循環。
格式:
for(初始化表達式; 循環條件; 操作表達式) {
………
for(初始化表達式; 循環條件; 操作表達式) {
執行語句
………
}
………
}
例如:用“*”打印直角三角形
1public class ForForDemo { 2 public static void main(String[] args) { 3 int i, j; // 定義兩個循環變量 4 for (i = 1; i <= 9; i++) { // 外層循環 5 for (j = 1; j <= i; j++) { // 內層循環 6 System.out.print("*"); // 打印* 7 } 8 System.out.print("\n"); // 換行 9 } 10 } 11}
第一步,在第3行代碼定義了兩個循環變量i和j,其中i為外層循環變量,j為內層循環變量。
第二步,在第4行代碼將i初始化為1,條件i <= 9為true,首次進入外層循環的循環體。
第三步,在第5行代碼將j初始化為1,由於此時i的值為1,條件j <= i為true,首次進入內層循環的循環體,打印一個“*”。
第四步,執行第5行代碼中內層循環的操作表達式j++,將j的值自增為2。
第五步,執行第5行代碼中的判斷條件j<=i,判斷結果為false,內層循環結束。執行后面的代碼,打印換行符。
第六步,執行第4行代碼中外層循環的操作表達式i++,將i的值自增為2。
第七步,執行第4行代碼中的判斷條件i<=9,判斷結果為true,進入外層循環的循環體,繼續執行內層循環。
第八步,由於i的值為2,內層循環會執行兩次,即在第2行打印兩個“*”。在內層循環結束時會打印換行符。
第九步,以此類推,在第3行會打印3個“*”,逐行遞增,直到i的值為10時,外層循環的判斷條件i <= 9結果為false,外層循環結束,整個程序也就結束了。
例如:用“*”打印等腰角三角形
public class ForForDemo { public static void main(String[] args) { System.out.println("請輸入等腰三角形行數:"); int s2 = sc.nextInt(); for (int i=1;i<=s2 ;i++ ){ for (int j =1;j<=s2-i ;j++ ){ System.out.print(" "); } for (int k = 1;k<=2*i-1 ;k++ ) {System.out.print("*"); } System.out.print("\n"); } } }
例如:打印99乘法表
public class ForForDemo { public static void main(String[] args) { for (int i = 1;i<=9 ;i++ ){ for (int j=1;j<=i ;j++ ){ System.out.print(j+"×"+i+"="+i*j+" "); } System.out.print("\n"); } } }
例如:用“*”打印倒直角三角形
public class ForForDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入三角形行數:"); int s = sc.nextInt(); for (int i = 1;i<=s ;i++ ){ for (int j=s;j>=i ;j-- ){ System.out.print("*"); } System.out.print("\n"); } } }
二 跳轉語句(break,continue)與標記
跳轉語句用於實現循環執行過程中程序流程的跳轉,在Java中的跳轉語句有break語句和continue語句。
1.break
在switch條件語句和循環語句中都可以使用break語句。當它出現在switch條件語句中時,作用是終止某個case
並跳出switch結構。當它出現在循環語句中,作用是跳出循環語句,執行后面的代碼。
例如:
public class BreakDemo { public static void main(String[] args) { int x = 1; // 定義變量x,初始值為1 while (x <= 4) { // 循環條件 System.out.println("x = " + x); // 條件成立,打印x的值 if (x == 3) { break; } x++; // x進行自增 } } }
2.標記
當break語句出現在嵌套循環中的內層循環時,它只能跳出內層循環,如果想使用break語句跳
出外層循環則需要對外層循環添加標記。
例如:
public class BreakDemo02 { public static void main(String[] args) { int i, j; // 定義兩個循環變量 aaa: for (i = 1; i <= 9; i++) { // 外層循環 for (j = 1; j <= i; j++) { // 內層循環 if (i > 4) { // 判斷i的值是否大於4 break aaa; // 跳出外層循環 } System.out.print("*"); // 打印* } System.out.print("\n"); // 換行 } } }
3.continue
continue語句用在循環語句中,它的作用是終止本次循環,執行下一次循環。
例如:
對1~100之內的奇數求和
public class ContinueDemo { public static void main(String[] args) { int sum = 0; // 定義變量sum,用於記住和 for (int i = 1; i <= 100; i++) { if (i % 2 == 0) { // i是一個偶數,不累加 continue; // 結束本次循環 } sum += i; // 實現sum和i的累加 } System.out.println("sum = " + sum); } }