循環(huán)結(jié)構(gòu)
Java中的循環(huán)結(jié)構(gòu)有三種:while循環(huán)結(jié)構(gòu)? do while循環(huán)結(jié)構(gòu)? for 循環(huán)結(jié)構(gòu)
while循環(huán)結(jié)構(gòu):
語法格式:
```java
while(循環(huán)條件){
? ? 循環(huán)操作
}
```
while循環(huán)結(jié)構(gòu)如果第一次判斷循環(huán)條件就不滿足,則會直接跳出循環(huán),循環(huán)操作一遍都不會執(zhí)行
##### 這是while循環(huán)結(jié)構(gòu)的一個特點(diǎn):先判斷 后執(zhí)行。
while循環(huán)的執(zhí)行順序:
1:聲明并創(chuàng)建循環(huán)變量
2:判斷循環(huán)條件是否滿足,如果滿足則執(zhí)行循環(huán)操作,否則退出循環(huán)
3:執(zhí)行玩循環(huán)操作后再次判斷循環(huán)條件 決定 繼續(xù) 執(zhí)行循環(huán) 還是 退出循環(huán)
### while案例
```java
import java.util.Scanner;
public class Demo01 {
? ? public static void main(String[] args) {
? ? ? ? //檢查學(xué)習(xí)情況,直到合格為止
? ? ? ? System.out.println("你的學(xué)習(xí)合格了嗎?(y/n)");
? ? ? ? Scanner scanner=new Scanner(System.in);
? ? ? ? String hege = scanner.next();
? ? ? ? while( !"y".equals(hege)){? ? ? ? ?
? ? ? ? ? ? //? equals相當(dāng)于 ==? 判斷字符是不是相等
? ? ? ? ? ? System.out.println("上午學(xué)理論");
? ? ? ? ? ? System.out.println("下午學(xué)編程");
? ? ? ? ? ? System.out.println("經(jīng)過復(fù)習(xí),這次合格了嗎?");
? ? ? ? ? ? hege = scanner.next();
? ? ? ? }
? ? ? ? System.out.println("恭喜你學(xué)習(xí)完成,去玩耍吧");
? ? }
}
```
while循環(huán)結(jié)構(gòu)解決問題的步驟:
1:分析循環(huán)條件和循環(huán)操作
2:套用while語法寫出代碼
3:檢查循環(huán)能否退出
do while 循環(huán)結(jié)構(gòu):
對于 while 語句而言,如果不滿足條件,則不能進(jìn)入循環(huán)。但有時候我們需要即使不滿足條件,也至少執(zhí)行一次。
do…while 循環(huán)和 while 循環(huán)相似,不同的是,do…while 循環(huán)至少會執(zhí)行一次
語法格式:
```java
do{
? ? 循環(huán)操作
} while (循環(huán)條件);
```
### do while 循環(huán)的執(zhí)行順序一般如下:
1:聲明并創(chuàng)建循環(huán)變量
2:判斷循環(huán)條件是否滿足,如果滿足,則執(zhí)行循環(huán)操作,否則退出循環(huán)
3:執(zhí)行玩循環(huán)操作后再次判斷循環(huán)條件 決定 繼續(xù) 執(zhí)行循環(huán) 還是 退出循環(huán)
### do while循環(huán)案例:
```java
import java.util.Scanner;
public class Demo03 {
? ? public static void main(String[] args) {
? ? ? ? String hege = null;? //定義一個全局的變量,恭供下文使用
? ? ? ? Scanner scanner = new Scanner(System.in);?
? ? ? ? //把掃描器定義在循環(huán)的外面,能夠提高程序的性能,占用更少的電腦系統(tǒng)資源
? ? ? ? do {
? ? ? ? ? ? System.out.println("上機(jī)編寫程序");
? ? ? ? ? ? System.out.println("合格了嗎?");
? ? ? ? ? ? hege = scanner.next();
? ? ? ? ? ? //限制性,在判斷
? ? ? ? } while (!"y".equals(hege));
? ? ? ? System.out.println("恭喜你合格了");
? ? }
}
```
使用do while循環(huán)解決問題的步驟如下:
1:分析循環(huán)條件和循環(huán)操作
2:套用while語法寫出代碼
3:檢查循環(huán)能否退出
?for循環(huán)
?語法格式:
```Java
for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
//循環(huán)體
}
```
for循環(huán)中有三個表達(dá)式
| 表達(dá)式1: | 賦值語句 | 循環(huán)結(jié)構(gòu)的初試部分,為循環(huán)變量賦初值? ? ? ? ? ? ? ? ? ? ? ? | 舉例? int? i = 0? |
| --------- | -------- | ------------------------------------------------------------ | ----------------- |
| 表達(dá)式2: | 條件語句 | 循環(huán)結(jié)構(gòu)的循環(huán)部分? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 舉例:? i <? 100 |
| 表達(dá)式3:? | 賦值語句 | ,通常使用++或--運(yùn)算符? ? ? ? ? ? ? 循環(huán)結(jié)構(gòu)的迭代部分,通常用來修改循環(huán)變量的值 | 舉例? ? i++? ? ? |
?for循環(huán)結(jié)構(gòu)執(zhí)行的順序
1:執(zhí)行初始部分( int i= 0;)
2:進(jìn)行循環(huán)條件判斷(i<100)
3:根據(jù)循環(huán)條件判斷結(jié)果
4:執(zhí)行迭代部分,改變循環(huán)變量值(i++)
5:依次重復(fù)步驟(2) ~步驟(4)知道退出for循環(huán)結(jié)構(gòu)
### for 循環(huán)案例
```java
package edc.xcdq;
import java.util.Scanner;
public class Main {
? ? public static void main(String[] args) {
? ? ? Scanner scanner =? new Scanner(System.in);
? ? ? int sum = 0 ;
? ? for( int i=1;i<5;i++){
? ? ? ? System.out.println("輸入第"+ i +"門課的成績");
? ? ? ? int fen = scanner.nextInt();
? ? ? ? sum += fen;? ? //sum = sum+fen
? ? }
? ? int pingjunfen = sum / 5;
? ? ? ? System.out.println("平均分為:"+ pingjunfen);
? ? }
}
```
?for循環(huán)解決問題的步驟:
1:明確循環(huán)條件和循環(huán)操作
2:套用while語法寫出代碼
3:檢查循環(huán)能否退出
?break語句的使用:
break 語句不僅可以用在while 和do while 循環(huán)結(jié)構(gòu)中 也可以用在for循環(huán)結(jié)構(gòu)中
break 語句案例:
```java
import java.util.Scanner;
public class break語句的練習(xí) {
? ? public static void main(String[] args) {
? ? ? ? int score;
? ? ? ? int sum =0;
? ? ? ? int avg;
? ? ? ? boolean isNegative = false;
? ? ? ? Scanner scanner = new Scanner(System.in);
? ? ? ? System.out.println("輸入學(xué)生姓名");
? ? ? ? String name = scanner.next();
? ? ? ? int i=0;
? ? ? ? while(i<5){
? ? ? ? ? ? System.out.println("請輸入第" + (i+1) + "門課的成績 :");
? ? ? ? ? ? score = scanner.nextInt();
? ? ? ? ? ? if(score < 0){
? ? ? ? ? ? ? ? isNegative = true;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? sum = sum + score;
? ? ? ? ? ? i++;
? ? ? ? }
? ? ? ? if(isNegative){
? ? ? ? ? ? System.out.println("抱歉,分?jǐn)?shù)錄入錯誤,請重新進(jìn)行錄入!");
? ? ? ? }else {
? ? ? ? ? ? avg = sum / 5;
? ? ? ? ? ? System.out.println(name + "的平均分是:"+avg);
? ? ? ? }
? ? }
}
```
continue語句的使用:
#### continue語句用于跳出本次循環(huán),進(jìn)入下一次循環(huán)的語句
#### continue語句的案例
```java
import java.util.Scanner;
public class Continue的練習(xí) {
? ? ? ? public static void main(String[] args) {
? ? ? ? ? ? int score;
? ? ? ? ? ? int num =0;
? ? ? ? ? ? int avg;
? ? ? ? ? ? Scanner scanner = new Scanner(System.in);
? ? ? ? ? ? System.out.println("輸入班級總?cè)藬?shù)");
? ? ? ? ? ? int total = scanner.nextInt();
? ? ? ? ? ? int i=0;
? ? ? ? ? ? while(i < total){
? ? ? ? ? ? ? ? i++;
? ? ? ? ? ? ? ? System.out.println("請輸入第" + i + "位學(xué)生的成績");
? ? ? ? ? ? ? ? score = scanner.nextInt();
? ? ? ? ? ? ? ? if(score < 80){
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? num++;
? ? ? ? ? ? }
? ? ? ? ? ? ? ? System.out.println("80分以上的學(xué)生人數(shù)是:"+num);
? ? ? ? ? ? double rate = (double) num / total *100;
? ? ? ? ? ? System.out.println("80分以上的學(xué)生所占的比例為"+ rate + "%");
? ? ? ? ? ? }
? ? ? ? }
```