JAVA-蓝桥杯-算法提高-计算时间

问题描述
  给定一个t,将t秒转化为HH:MM:SS的形式,表示HH小时MM分钟SS秒。HH,MM,SS均是两位数,
如果小于100补到两位。
输入格式
  第一行一个数T(1<=T<=100,000),表示数据组数。后面每组数据读入一个数t,0<=t<24*60*60。
输出格式
  每组数据一行,HH:MM:SS。

提醒:这道题需要考虑的条件比较多,需要细心、

代码如下

import java.util.Scanner;


public class 计时 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		int arr[]=new int[m];
		for (int i = 0; i <m; i++) {			
				arr[i]=sc.nextInt();
		}
		for (int i = 0; i <m; i++) {
			int a = arr[i];
			if(a>=0&&a<86400){  //判断条件,判断是否超出了可以表示的时间格式
			int b=0,c=0;   //定义两个变量,并且每次循环回到这里b、c的值都归零
			    b = a; //把a赋值给b
			    b = b%60;  //取模,也就是时间格式中的 “秒数” 位
			    a=a/60;  //时间格式中的 “分数” 位
			    if(a>=60){  //如果“分数”位大于等于60则需要进位
			    	c = a;  //把a赋值给c
			    	a=a%60;   //取模,也就是时间格式中的 “分数” 位,因为前面那个“分数”位大于等于60,不符合格式,需要重新定
			    	c=c/60;  //“小时”位
			    	
			    }   
			    //下面这些都是条件,分8种情况,大于10小于10目的是保证格式的完整性
			    	 if (a>=10&&b<10&&c<10) {  
			    		System.out.println("0"+c+":"+a+":0"+b);
					}
			    	else if (a>=10&&b<10&&c>=10) {       
			    		System.out.println(c+":"+a+":0"+b);
					}
			    	else if (a>=10&&b>=10&&c<10) {
			    		System.out.println("0"+c+":"+a+":"+b);
					}
			    	else if (a>=10&&b>=10&&c>=10) {
			    		System.out.println(c+":"+a+":"+b);
					}
			    	else if (a<10&&b>=10&&c>=10) {
			    		System.out.println(c+":0"+a+":"+b);
					}
			    	else if (a<10&&b>=10&&c<10) {
			    		System.out.println("0"+c+":0"+a+":"+b);
					}
			    	else if (a<10&&b<10&&c>=10) {
			    		System.out.println(c+":0"+a+":0"+b);
					}
			    	else if (a<10&&b<10&&c<10) {
			    		System.out.println("0"+c+":0"+a+":0"+b);
					}
			}
		}	
	}

}

程序调试结果如下:

3
3600  2150  4520

01:00:00
00:35:50
01:15:20
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值