第十四届蓝桥杯模拟赛第一期试题【Java解析】充电器

H 充电器


问题描述


小蓝有一个充电器,可以使用不同的电压和电流充电。
给定充电器工作的记录,请计算在这个记录期间总共通过充电传输了多少电能。

输入格式


输入第一行包含一个整数 n , 表示记录的条数。
接下来 n 行,每行包含一个时刻 T 和两个非负整数 U, I,表示在时刻 T 充电电压变为 U(单位伏),电流变为 I(单位A)。最后一行满足 U 和 I 均为 0,在前面的行中也可能出现 U、I 为 0 的情况。其中时间表示为 HH:MM:SS 的格式,时分秒分别用两位十进制数表示(补前导零)。
输入保证时刻依次递增且在 00:00:00 至 23:59:59 的区间内,不用考虑跨过零点充电的情况。

输出格式


输出一个整数,表示总共通电的电能为多少焦耳,其中 1 焦耳等于 1 伏乘以1 安乘以 1 秒。
 

样例输入

    3
    12:00:00 12 1
    12:01:02 5 2
    12:01:10 0 0

 

样例输出

    824

评测用例规模与约定

对于所有评测用例, 1 < = n < = 100 , 0 < = U , I < = 100 1 <= n <= 100, 0 <= U, I <= 100 1<=n<=100,0<=U,I<=100。

解析

 使用Java的SimpleDateFormat类和数组处理时间和电压电流等数据

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Main {
    public static void main(String[] args)throws Exception {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
       //下面代码表示格式化一个日期,因为我们只用到了时分秒,所以只格式化时分秒即可
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
        Date[] dates = new Date[n];//日期数组,存放我们输入的n个时间
        int[] U = new int[n];        //电压数组,存放我们每次输入的电压
        int[] I = new int[n];        //电流数组,存放我们每次输入的电流        
        int sum=0;                   //存放我们要求的结果 焦耳
        for (int i = 0; i < n; i++) {
            dates[i]=simpleDateFormat.parse(scanner.next());//将我们每次输入的字符串时间存放到
//Date数组中 循环过后Date数组中存放的是我们输入的n个时间的时分秒
            U[i] = scanner.nextInt(); 
            I[i] = scanner.nextInt();
        }
        for (int i = 0; i < n-1; i++) {
//计算产生的焦耳,每次输入的电流电压(对应的是该时间内我们给定的电流电压)乘这段时间
//这段时间就是Date数组中下一个元素的值减去该元素的值 getTime得到的是毫秒,所以要转换为秒进行运算
            sum+=U[i]*I[i]*((dates[i+1].getTime()-dates[i].getTime())/1000);
        }
        System.out.println(sum);
    }
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值