while迴圈do...while迴圈及for迴圈
技術標籤:java
迴圈結構
-
while 迴圈
-
do…while 迴圈
-
for 迴圈
順序結構只能執行一次,迴圈結構可以無限執行
-
在Java5中引入了一種主要用於陣列的增強型for迴圈。
while 迴圈
-
while是最基本的迴圈,它的結構為:
while(布林表示式){ //迴圈內容 }
-
只要布林表示式為true,迴圈就會一直執行下去
(只要布林表示式條件為真,就會一直走下去)
-
示範
package struct;
public class WhileDay01 {
public static void main(String[] args) {
//輸出1~100
int i = 0;
while (i<100) {
i++;
//i++ i+1 先賦值在+1
System.out.println(i);
}
}
}
我們先輸入一個i=0. 然後再用while迴圈 while(布林表示式){
迴圈條件 }進行
while的迴圈條件是布林表示式必須為true。
我們需要輸出的內容是1~100.
可以在布林表示式裡面輸入, “i<100”
意思是i小於100
然後我們在迴圈條件裡面輸入i++
意思i自增當然**++i也可以**
這樣整段程式碼
int i = 0;
while (i<100) {
i++;
//i++ i+1 先賦值在+1
System.out.println(i);
}
然後我們輸出一下,
就是1~100了
整片程式碼的意思是
i=0時, while(i<100) //條件成立,為true, 程式碼執行 {
i++ //執行程式碼i++ i++:先賦值,在自增 (當然++i也可以)
}
System.out.println(i);
輸出i i=0 小於100 程式碼執行 i++ i+1(0+1)= 1
再次迴圈 i=1
然後i=2
以此推類
死迴圈
package struct;
public class WhileDay02 {
public static void main(String[] args) {
//死迴圈
while (true) {
//等待客戶端連線 //(true)意思是永遠是對的,一直執行
//定時檢查
//..............
}
}
}
-
while(true)裡面為true的時候,將視為可執行
然後就會一直無限迴圈的執行下去
思考一下
計算1+2+3+…+100=?
等於多少該怎麼用程式碼計算
示列
package struct;
public class WhileDat03 {
public static void main(String[] args) {
//計算1+2+3+...+100=?
int i = 0;
int sum = 0;
while (i<=100) {
sum = sum + i;
i++;
}
System.out.println(sum);
}
我們先設定一個int型別的i 和sum分別為零
然後再誰知while(i<=100) //因為1+2+3…+100 是有100的所以,需要<=
然後再迴圈內輸入,sum(和)= sum + i ;
再輸入一個i++; 目的是讓i沒迴圈一次,就+1
這樣,我們在執行一下sum 答案等於5050
do…while 迴圈
- 對於while語句而言,如果不滿足條件,則不能進入迴圈,有時候我們需要不滿足條件,至少執行一次,所以就有了do…while 迴圈,他很while迴圈相似,不同的是do…while迴圈至少會執行一次
語句
do{
//程式碼語句
}while(布林表示式);
while和do…while的區別:
-
while先判斷後執行,do…while先執行後判斷!
-
Do…while總是保證迴圈體會被至少執行一次!這是他們的主要差別
示範
package struct; public class DoWhileDay02 { public static void main(String[] args) { int a = 0; while(a<0) { System.out.println(a); a++; } System.out.println("==========================="); do { System.out.println(a); a++; }while(a<0); } }
執行一下,得出結構
為什麼只有分割線下面有0的原因是
while(a<0)執行迴圈一次,但是有a++,此時a=1大於0.無法執行
do…while(a<0)是先執行一次,在判斷
所以分割線下面的do…while(a<0)運算出來了
For 迴圈,程式中用到最多的迴圈★(重點)
語法格式
for(初始化;布林表示式;更新){
//程式碼語句
}
示列
package struct;
public class ForDay01 {
public static void main(String[] args) {
int a = 1;//初始化條件
while(a<=100) {//條件判斷
System.out.println(a);//迴圈體
a += 2;// a = a+2 的意思 //迭代
}
System.out.println("while迴圈結束!");
//初始化值//條件判斷//迭代
for(int i = 1;i<=100;i++) {
System.out.println(i);
}
System.out.println("for迴圈結束!");
}
}
運算一下,最後for迴圈跟while迴圈一下
初始化:int i = 1;
條件判斷:i<=100;
更新:也是 迭(die 第三聲)代 就是i++ 或者 a +=2
for 迴圈語句是支援迭代的一直通用結構,是最有效、最靈活的迴圈結構。
for迴圈注意
/*
* 關於for迴圈的幾點說明:
* 最先執行初始化步驟。可以宣告一種型別,但可初始化一個或多個迴圈控制變數,也可以是空語句。
* 然後,檢測布林表示式的值。如果為true,迴圈繼續進行,如果為false。迴圈終止,開始執行迴圈後面的語句
* 執行一次迴圈後,更新迴圈控制變數(迭代因子控制迴圈遍歷的增減)
* 再次檢測布林表示式。迴圈執行上面的過程.
* */
for(;;){
}
帶for迴圈沒有任何值的時候,會變成一個死迴圈
因為沒有布林表示式,沒有迭代,會一直執行下去**!!!!!!**
不相信的你們可以試一下
for迴圈練習
練習1:計算0到100之間的奇數與偶數的和
示
package struct;
public class ForDay02 {
public static void main(String[] args) {
//練習1:計算0到100之間的奇數與偶數的和
int oddSum = 0; //儲存奇數的和
int evenSum = 0; //儲存偶數的和
//如果int i = 0 那麼i<100成立, 就走迴圈的路
for (int i = 0;i<=100;i++) {
if(i%2!=0) { //奇數 //% 是模運算 //!= 是不等於的意思
oddSum+=i; //oddSum= oddSum+i
}else { //偶數 //else : 反之
evenSum+=i; //evenSum=everSum+i
}
}
System.out.println("奇數的和:"+oddSum);
System.out.println("偶數的和:"+evenSum);
}
}
if(i%2!=0)
//%是模運算,用來求餘數的
1/2=0.5 餘數是5 不等於0 所以是奇數
2/2=1.0 餘數是0 等於零 所以是偶數
練習2:用while或for迴圈輸出1-1000之間能被5整除的數,並且每行輸出3個
示列
package struct;
public class ForDay03 {
public static void main(String[] args) {
//練習2:用while或for迴圈輸出1-1000之間能被5整除的數,並且每行輸出3個
for (int i = 1;i<=1000;i++) {
if(i%5==0) {
System.out.print(i+"\t");
}
if(i%(5*3)==0) { //每行
System.out.println();
//System.out.print("\n");
}
//println 輸出完會換行
//print 輸出完不會換行
}
}
}
1000裡面被5整除的數字的方法
這裡if(i%5==0)也是跟上面一樣
只有5的倍數才可以等於0
每行3個之後就換行的方法
但是下面的if(i%(5*3)==0)
程式碼是按照從上往下的順序執行的,所以上面程式碼執行完之後,輸出的只有5的倍數的數字了,
然後if(i%(5*3)==0) 的意思是,數字被15整除之後,餘數為零就執行這行程式碼
System.out.println();是換行的意思
println是 輸出完會換到下一行
print是輸出完,不會換行,繼續輸出下去
System.out.print(i+"\t"); 那個\t的意思是空格