【Java】小乐乐定闹钟—方法:split && Integer.parseInt—(OJ:牛客-哈理工新生赛/1877第M题)

链接:https://ac.nowcoder.com/acm/contest/1877/M
来源:牛客网

时间限制: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));		
	}
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值