描述
乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)
输入描述:
输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。
输入格式:hour:minute k(如hour或minute的值为1,输入为1,而不是01)
(0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109)
输出描述:
对于每组输入,输出闹钟应该设定的时刻,输出格式为标准时刻表示法(即时和分都是由两位表示,位数不够用前导0补齐)。
代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//用 String 来接收输入的时刻
//不能使用 sc.nextLine();
String str = sc.next();
//用 int 来接收睡觉的分钟数
int k = sc.nextInt(); // 记录k分钟
int index = 0;
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) == ':'){//单字符型
index = i;
break;
}
}
int hour = Integer.parseInt(str.substring(0,index));//分割出 hour
int minute = Integer.parseInt(str.substring(index+1,str.length()));
hour = (hour+(k+minute)/60)%24;
minute = (k%60+minute)%60;
System.out.println(String.format("%02d",hour)+":"+String.format("%02d",minute));
}
}
用到的知识点
1、java.lang.String 包中的 charAt() 方法,返回一个 char 类型
charAt(int index) 返回指定索引处的 char 值。
代码中的 str.charAt(i) 首先 str 定义的是 String 类型,调用 charAt()方法获取第 i 个字符
2、java.lang.String 包中的 substring() 方法,返回一个 String 类型
substring(int beginIndex) : 返回一个新的字符串,它是此字符串的一个子字符串。
substring(int beginIndex, int endIndex) : 返回一个新字符串,它是此字符串的一个子字符串。
代码中 str.substring(0,index); 表示返回从 0 到 index 的一个子字符串
3、java.lang.Object
继承者 java.lang.Number
继承者 java.lang.Integer
返回 static int 类型
parseInt(String s): 将字符串参数作为有符号的十进制整数进行解析。
parseInt(String s, int radix): 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
代码中 :
Integer.parseInt(str.substring(0,index)); 表示将字符串 str 的子字符串 0到index 解析为有符号的十进制整数。
Integer.parseInt(str.substring(index+1,str.length()));表示将字符串 str 的子字符串 index+1到str.length() 解析为有符号的十进制的整数。