时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)
输入描述:
输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。
输入格式:hour:minute k(如hour或minute的值为1,输入为1,而不是01)
(0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109)
输出描述:
对于每组输入,输出闹钟应该设定的时刻,输出格式为标准时刻表示法(即时和分都是由两位表示,位数不够用前导0补齐)。
示例1
输入
0:0 100
输出
01:40
示例2
输入
1:0 200
输出
04:20
方法:split && Integer.parseInt
没错,解决这一题的用到方法有两个。
第一个split 解决的是字符串的分裂问题。
第二个Integer.parseInt解决的是字符串转整型的问题。
其实还有一个技巧,就是DecimalFormat,关于这个可以参考我的上一篇博客
链接在下面:
https://blog.csdn.net/weixin_43785855/article/details/102991462
1、split
Java中的 split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回。
String str="12:34";
String[] a = str.split(":");
System.out.println(a[0]+","+a[1]); //12,34
注意:但是对某些特殊字符,如果字符(串)正好是正则的一部分,则需要转义才能使用,这些字符有 | , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \
等, 因它们是正则表达式中的一部分, 所以如果想用该字符本身, 这些字符需要进行转义需要两个 \才能表示它本身。
2、Integer.parseInt
Integer.parseInt(String)的作用就是将String字符类型数据转换为Integer整型数据。
num = Integer.parseInt(str) ; //将str字符串转换为整型并存储到int类型的num中
注意:Integer.parseInt(String)遇到一些不能被转换为整型的字符时,会抛出异常。
Java源代码
package t_牛客_哈理工新生赛_1108;
import java.text.DecimalFormat;
import java.util.Scanner;
/**
* @Title: M.java
* @author Baisu
* @date 2019年11月9日
* @version 1.0
*/
public class M {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String s = sc.nextLine(); //因为输入的是一行,所以将这一行全部当做字符串
String sk [] = s.split(" "); //先从空格分裂,sk[0]为现在的时间 sk[1]为休息的分钟
String st [] = sk[0].split(":"); //在将sk[0]分裂
int h = Integer.parseInt(st[0]); //st[0]为小时
int m = Integer.parseInt(st[1]); //st[1]为分钟
int k = Integer.parseInt(sk[1]); //sk[1]为休息的分钟
int sum = h*60+m+k; //统一单位min
if(sum>1440) { //如果大于一天,即1440min
sum%=1440; //对1440求余
}
int a = sum/60; //hour
int b = sum%60; //min
System.out.print(new DecimalFormat("00").format(a));
System.out.print(":");
System.out.println(new DecimalFormat("00").format(b));
}
}