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();
}
}
}
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);
}
}
}
}