Java學習之流程控制練習

@ 搖滾吧!阿文發表於2020-12-30

1、某市計程車計費標準如下圖所示,請根據此標準完成一個計程車計費模擬功能,能夠計算總費用和列出產生費用專案詳細情況說明,幫助計程車師傅和乘客瞭解計費標準。
在這裡插入圖片描述
結合上述表格,可以得出:總車費=里程費用+低速行駛費(或者等候費)+預約叫車服務費+空駛費+夜間收費+燃油附加費。需要收集的資料有:里程數、低速行駛時長(早晚高峰期行駛時長和其他時間段行駛時長)、是否預約叫車(按四小時為標準)、開始乘坐計程車時間、計程車到達終點站時間,結合這些資料和表中提供的標準就可以使用程式進行計算總車費了。

package com.day05.homework1;
import java.util.Scanner;
public class Taxt {
	public static void main(String[] args) {
		int totalMoney=0;//總車費
		double mileageMoney=0;//里程費用
		double totalMileage = 0;//總里程
		double orderMoney=0;//預約費用
		double slowTime = 0;//低速行駛時長
		double slowMoney=0;//低速行駛費用
			
		Scanner input= new Scanner(System.in);
		System.out.println("請輸入開始乘車時間:");
		int timeStart = input.nextInt();
		System.out.println("請輸入到達目地時間:");
		int timeFinish = input.nextInt();
		int time = timeFinish-timeStart;//路程總時長
		System.out.println("請輸入低俗行駛的時長(分鐘):");
		slowTime =input.nextInt();
		//低速行駛費用
		if (7<=timeStart&&timeStart<9 || 17<=timeStart&&timeStart<19) {
			slowMoney=(slowTime/5)*(2*2.3);
		}else {
			slowMoney=(slowTime/5)*(1*2.3);
		}
		//預約費用
		System.out.println("請輸入是否預約車");
		String isOrder = input.next();
		if (isOrder.equals("是")) {
			System.out.println("是否提前4個小時預約");
			String orderTime = input.next();
			if (orderTime.equals("是")) {
				orderMoney=6;
			}else {
				orderMoney=5;
			}
		}else {
			System.out.println("您沒有預約車");
		}
		//行駛路程費用
		System.out.println("輸入行駛路程(公里):");
		totalMileage =input.nextInt();
		
		if (totalMileage<=3) {//行駛在3公里範圍內
			totalMoney=13;
		}else if (totalMileage>15) {//里程超過15公里
			//白天費用
			mileageMoney =(15*2.3)+(totalMileage-15)*2.3*(1+0.5);
			//夜間費用
			if (23<=timeStart&&0<=timeStart&&timeStart<5) {
				mileageMoney =(15*2.3)+(totalMileage-15)*2.3*(1+0.5)*(totalMileage*2.3*(1+0.2));
			}
		}else if (totalMileage<15) {//里程在3-15公里內
			//白天費用
			mileageMoney=totalMileage*2.3;
			//夜間費用
			if (23<=timeStart&&0<=timeStart&&timeStart<5) {
				mileageMoney=totalMileage*2.3+totalMileage*2.3*(1+0.2);
			}
		}	
		
		//總共費用
		totalMoney=(int)(slowMoney+orderMoney+mileageMoney);
		System.out.println("您本次的費用為:"+totalMoney+"元");
	}
}

2、計算應繳金額
商場根據會員積分打折:
2000 分以內打 9 折,
4000 分以內打 8 折,
8000 分以內打 7.5 折,
8000 分以上打 7 折,使用 if-else-if 結構,實現手動輸入購物金額和積分,計算出應繳金額:

package com.day05.homework3;
import java.util.Scanner;
public class Market {
	public static void main(String[] args) {
		double totalMoney=0;//總應繳金額
		int money=0;//購買金額
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入你購買的金額:");
		if(scanner.hasNextInt()) {
			money = scanner.nextInt();
		}else {
			System.out.println("請正確輸入金額:");
		}
		System.out.println("請輸入你的積分:");
		if(scanner.hasNextInt()) {
			int integral =scanner.nextInt();
			if(integral<=2000) {
				totalMoney=money*0.9;
			}else if(integral<=4000) {
				totalMoney=money*0.8;
			}else if(integral<=8000) {
				totalMoney=money*0.75;
			}else {
				totalMoney=money*0.7;
			}
		}else {
			System.out.println("請正確輸入積分");
		}
		System.out.println("你應繳的費用為:"+totalMoney);
	}

}

3 、計算該年該月天數一年中有 12 個月,而每個月的天數是不一樣的。其中大月 31 天,分別為1,3,5,7,8,10,12 月,小月 30 天,分別 為 4,6,9,11 月。還有二月比較特殊,平年的二月只有 28 天,而閏年的二月有 29 天,由使用者在控制檯輸入年份和月份,程式計算該年該月的天數。

package com.day05.homework3;
import java.util.Scanner;
public class TestDay {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入四位數的年份:");
		int year=scanner.nextInt();
		System.out.println("請輸入年份:");
		if(scanner.hasNextInt()) {
			int month=scanner.nextInt();
			switch(month) {
				case 1:
				case 3:
				case 5:
				case 7:
				case 8:
				case 10:
				case 12:
					System.out.println("該月份有"+31+"天");
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					System.out.println("該月份有"+30+"天");
					break;
				case 2:
					if(year%4==0&&year%100!=0||year%400==0) {
						System.out.println("該月份有"+29+"天");
					}else {
						System.out.println("該月份有"+28+"天");
					}
			}
		}
	}

}

4 、圖形列印任務在控制檯中,編寫三個 Demo,分別輸出如下圖形:
在這裡插入圖片描述
圖一:

package com.day05.homework3;
public class Demo1 {
	public static void main(String[] args) {
		for(int i=0;i<5;i++) {
			for(int j=0;j<i+1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

圖二:

package com.day05.homework3;
public class Demo2 {
	public static void main(String[] args) {
		for(int i=0;i<5;i++) {
			for(int j=i+1;j<=5;j++) {
				System.out.print("*");
			}
			System.out.println();
		}	
	}
}

圖三:

package com.day05.homework3;
public class Demo3 {
	public static void main(String[] args) {
		for(int i=0;i<5;i++) {
			for(int j=i+1;j<5;j++) {
				System.out.print(" ");
			}
			for(int j=1;j<=i*2+1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

5、表 、列印九九乘法表 ,效果如圖:
在這裡插入圖片描述

package com.day05.homework3;
public class Multiplication {
	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+"\t");
			}
			System.out.println();
		}
	}
}

6 、列印三位數中的所有水仙花數
所謂“水仙花數”即一個整數滿足其值等於各個數位的立方和。
如: 153 是一個水仙花數,因為 153= 1³+5³+3³

package com.day05.homework3;
import java.util.Scanner;
public class Daffodils {
	public static void main(String[] args) {
		System.out.println("三位數的水仙花數:");
		for (int i = 100; i < 1000; i++) {
			int a = i%10;//個位數
			int b = i%100/10;//十位數
			int c = i%1000/100;//百位數
			if(a*a*a+b*b*b+c*c*c==i) {
				System.out.println(i);
			}
		}
	}
}

相關文章