这题很明显要分多种情况讨论,0点至8点之间,0点之前,两种情况,在每种情况中又细分有四种情况,h大于或小于10,m大于或小于10。
首先先计算出走到学校要走多少分钟,s/v遇到小数要向上取整,再加上额外的10分钟,然后看它是否大于8*60
①如果大于说明是从昨天出发的,先把时间减去8*60,再用24*60进行计算
②如果小于说明是在今天出发的,直接用8*60减时间,得到出发的时间
将计算后得到的分钟转化成时分,用除60得到小时,用取余60得到分钟
根据时和分是否小于10进行判断,分成四种情况,符合哪种就按哪种输出
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); double s = cin.nextDouble(); double v = cin.nextDouble(); int h = 0; int m = 0; int minute = (int) (10 + Math.ceil(s / v));//计算到学校需要多少分钟 //判断是从今天出发还是从昨天出发,然后把时间转换一下 if (minute > 8 * 60) minute = 24 * 60 - (minute - 8 * 60); else minute = 8 * 60 - minute; //转化成时分 h = minute / 60; m = minute % 60; //分成四种情况,如果小于10就手动加个0,时和分用:隔开 if (h < 10 && m >= 10) System.out.println("0" + h + ":" + m); if (h < 10 && m < 10) System.out.println("0" + h + ":" + "0" + m); if (h >= 10 && m >= 10) System.out.println(h + ":" + m); if (h >= 10 && m < 10) System.out.println(h + ":" + "0" + m); cin.close(); } }