Java語言程式設計—迴圈語句

紅se楓葉發表於2018-10-20

4.1 while迴圈

while迴圈在條件為真的情況下,重複的執行語句。
while迴圈語法如下:
while(迴圈繼續條件){
//迴圈體
語句(組);
}
注意:迴圈繼續條件應該總是放在圓括號內。只有當迴圈體制包含一條語句火不包含語句時,迴圈體的花括號才可以省略。
要保證迴圈繼續條件最終變成false,一便程式能夠結束。一個常見的程式設計錯誤是無限迴圈。如果程式執行了不尋常的長時間而不結束,可能其中有無限迴圈。
迴圈設計策略
第一步:確定需要重複的語句。
第二步:將這些語句放在一個迴圈中,如下所示:
while(true){
語句組;
}
第三步:為迴圈繼續條件編碼,併為控制迴圈新增適合的語句。如下所示:
while(迴圈繼續條件){
語句組;
用於控制迴圈的附件語句;
}
注意:在迴圈控制中,不能使用浮點直來比較是否相等。因為浮點值都是某些值得近似值,使用他們可能導致不精確的迴圈次數和不精確的結果。

4.2 do-while迴圈

要點提示:do-while迴圈和while迴圈基本一樣,不同的是它先執行迴圈體一次,然後判斷迴圈繼續條件。
do-while迴圈是while迴圈的變體。它的語法如下:
do{
//迴圈體;
語句(組);
}while(迴圈繼續條件);
在這裡插入圖片描述
提示:如果迴圈中的語句至少需要執行一次,建議使用do-while迴圈。

4.3 for迴圈

要點提示:for迴圈具有編寫迴圈的簡明語法。
for迴圈的語法如下:
for(初始操作;迴圈繼續條件;每次迭代後的操作){
//迴圈體;
語句(組);
}
在這裡插入圖片描述
for迴圈語句從關鍵字for開始,然後使用雙括號括住的迴圈控制結構體。

4.4 巢狀迴圈

巢狀迴圈是有一個外層迴圈和一個或多個內層迴圈組成的。每當重複執行一次外層迴圈時將再次進行內部迴圈,然後重新開始。
注意:巢狀迴圈將執行的時間較長。

4.5 最小化數值錯誤

要點提示:在迴圈繼續條件中使用浮點數將導致數值錯誤。
涉及浮點數的數值誤差是不可避免的,因為浮點數在計算機中本省就是近似表示的。

4.6 break和continue

要點提示:關鍵字break和continue在迴圈中提供了額外的控制。
注意:continue語句總是在一個迴圈內。在while和do-while迴圈中,continue語句之後會馬上計算迴圈繼續條件;而在for迴圈中,continue語句之後會立即先執行每次迭代後的動作,在計算迴圈繼續條件。

編寫程式

4-11

import java.util.*;
public class day4_11 {
	public static void main(String args[]){
		Scanner scanner=new Scanner(System.in);
		System.out.print("輸入一個值:");
		int number=scanner.nextInt();
		double a=1;
		long b=1;
		for(int i=1;i<=number;i++){
			 b=i*b;
			double c=1.0/b;
			a=a+c;
		}
		System.out.println(a);
	}
}

4-12

import java.util.*;
public class day4_12 {
	public static void main(String args[]){
	Scanner scanner=new Scanner(System.in);
	System.out.print("輸入年份:");
	int year=scanner.nextInt();
	System.out.print("輸入一月份第一天星期:");
	int match=scanner.nextInt();
	String array[]=new String[]{"A","B","C","D","E","F","G"}; 
	if(year%4==0&&year%100!=0||year%400==0){
		switch(0){
		case 0: System.out.println(year+"  1月"+array[match]);
		case 1: System.out.println(year+"  2月"+(array[(match+3)%7]));
		case 2: System.out.println(year+"  3月"+(array[(match+4)%7]));
		case 3: System.out.println(year+"  4月"+array[match%7]);
		case 4: System.out.println(year+"  5月"+(array[(match+2)%7]));
		case 5: System.out.println(year+"  6月"+(array[(match+5)%7]));
		case 6: System.out.println(year+"  7月"+(array[(match+7)%7]));
		case 7: System.out.println(year+"  8月"+(array[(match+3)%7]));
		case 8: System.out.println(year+"  9月"+(array[(match+6)%7]));
		case 9: System.out.println(year+"  10月"+(array[(match+1)%7]));
		case 10: System.out.println(year+"  11月"+(array[(match+4)%7]));
		case 11: System.out.println(year+"  12月"+(array[(match+6)%7]));
		}}else{
			switch(0){
			case 0: System.out.println(year+"  1月"+array[match]);
			case 1: System.out.println(year+"  2月"+(array[(match+3)%7]));
			case 2: System.out.println(year+"  3月"+(array[(match+3)%7]));
			case 3: System.out.println(year+"  4月"+(array[(match+6)%7]));
			case 4: System.out.println(year+"  5月"+(array[(match+1)%7]));
			case 5: System.out.println(year+"  6月"+(array[(match+4)%7]));
			case 6: System.out.println(year+"  7月"+(array[(match+6)%7]));
			case 7: System.out.println(year+"  8月"+(array[(match+2)%7]));
			case 8: System.out.println(year+"  9月"+(array[(match+6)%7]));
			case 9: System.out.println(year+"  10月"+(array[(match+7)%7]));
			case 10: System.out.println(year+"  11月"+(array[(match+3)%7]));
			case 11: System.out.println(year+"  12月"+(array[(match+5)%7]));
			}
		}	
	}
}

4-16

import java.util.*;
public class d4_16 {
	public static void main(String args[]){
		Scanner scanner=new Scanner(System.in);
		int pcount=0,ccount=0;
		while(true){
		System.out.print("請輸入數字:");
		int p=scanner.nextInt();
		int c=(int)(Math.random()*3);
		if(p==c){
			System.out.print("平局");
		}if(p==0&&c==1){
			System.out.println("電腦勝");
			ccount++;
		}if(p==0&&c==2){
			System.out.println("玩家勝");
			pcount++;
		}if(p==1&&c==2){
			System.out.println("電腦勝");
			ccount++;
		}if(p==1&&c==0){
			System.out.println("玩家勝");
			pcount++;
		}if(p==2&&c==0){
			System.out.println("電腦勝");
			ccount++;
		}if(p==2&&c==1){
			System.out.println("玩家勝");
			pcount++;
		}if(ccount==2||pcount==2){
				break;
		}}
	if(pcount==2){
		System.out.println("玩家勝");
	}else{
		System.out.println("電腦勝");
		}
	}
}
}

4-18

import java.util.*;
public class day4_18 {
	public static void main(String args[]){
		Scanner scanner=new Scanner(System.in);
		System.out.print("輸入數值:");
		int num=scanner.nextInt();
		String a="";
		while(true){
			int number=num%16;
			
			if(number>9){
				switch(number){
				case 10:a="A"+a;break;
				case 11:a="B"+a;break;
				case 12:a="C"+a;break;
				case 13:a="D"+a;break;
				case 14:a="E"+a;break;
				case 15:a="F"+a;break;
				}
			}else{
			
			 a=number+a;
			}
			num/=16;
			if(number==0){
				break;
			}
		}
		System.out.println("0X"+a);
	}

}

相關文章