汽车油耗录入及统计(Gas Mileage)

花了1小时完成了一个小练习,不容易啊!

 

主要知识点:

1. While循环中使用sentinel(循环退出判断条件)实现indefinite loop(不定循环)。

说简单点,就是只要用户愿意,可以无限次输入;不愿意,可以输入一个约定好的值随时退出循环。

2. 用户退出时机分为两种:

a. 退出时未输入至少一组有效数据

b. 退出时已输入至少一组有效数据

a情况由while循环之前的代码对应,b情况则在while循环内部处理。a类似于初始化代码。

 

代码如下:

//Java how to program, 10th edition, Exercise 4.17
//by Pandenghuang@163.com
/** 
*问题陈述:
*(Gas Mileage) Drivers are concerned with the mileage their automobiles get. One driver has
*kept track of several trips by recording the miles driven and gallons used for each tankful. Develop
*a Java application that will input the miles driven and gallons used (both as integers) for each trip.
*The program should calculate and display the miles per gallon obtained for each trip and print the
*combined miles per gallon obtained for all trips up to this point. All averaging calculations should
*produce floating-point results. Use class Scanner and sentinel-controlled repetition to obtain the
*data from the user.
*/
import java.util.*;

public class GasMileage
{
	public static void main(String[] args) 
	{
		Scanner input=new Scanner(System.in);

		int miles=0;
		int gallons=0;
		int milesTotal=0;
		int gallonsTotal=0;
		int inputTimes=1;
		int validInputTimes=0;
		
		System.out.printf("开始第%d次输入\n",inputTimes);
		System.out.print("请输入行驶里程(输入-1结束输入):");
		miles=input.nextInt();
		if (miles==-1)
		{
			System.out.println("您没有输入足够的有效数据。");
			return;
		}
		System.out.println("本次行驶里程为:"+miles);
		milesTotal+=miles;
		
		System.out.print("请输入油耗(输入-1退出程序):");
		gallons=input.nextInt();
		if (gallons==-1)
		{
			System.out.println("您没有输入足够的有效数据。");
			return;
		}
		System.out.println("本次油耗为:"+gallons+"加仑");
		gallonsTotal+=gallons;
		System.out.printf("本次行程每加仑行驶里程为:%.2f\n\n",(double)miles/gallons);
		++inputTimes;
		++validInputTimes;
		
		while (miles!=-1 && gallons!=-1)
		{
			System.out.printf("开始第%d次输入\n",inputTimes);
			System.out.print("请输入行驶里程(输入-1结束输入):");
			miles=input.nextInt();
			if (miles!=-1)
			{
				System.out.println("本次行驶里程为:"+miles);
				System.out.println("请输入油耗(输入-1退出程序):");
				gallons=input.nextInt();
				if (gallons!=-1)
				{
					System.out.println("本次行程油耗为:"+gallons+"加仑");
					milesTotal+=miles;
					gallonsTotal+=gallons;
					++inputTimes;
					++validInputTimes;
					System.out.printf("本次行程每加仑行驶里程为:%.2f\n\n",(double)miles/gallons);
				}
				else
				{
					System.out.println("\n\n您已结束数据输入。");
					break;
				}
				
			}
			else
			{	
				System.out.println("\n\n您已结束数据输入。");
				break;
			}

			
		}

		System.out.print("\n*******************************************************************\n");
		System.out.printf("您总共输入了%d组有效数据\n",validInputTimes);
		System.out.printf("您的行驶总里程为:%d 公里,总油耗为:%d 加仑\n",milesTotal,gallonsTotal);
		System.out.printf("平均每加仑行驶里程为:%.2f\n",(double)milesTotal/gallonsTotal);
		System.out.print("*******************************************************************\n\n\n");
	
	}
}


 

运行截屏:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值