java入门题
题目描述
【深基2.例12】上学迟到
题目描述
学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 10 分钟的时间进行垃圾分类。
学校要求必须在上午 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
输入格式
一行两个正整数 s,v,分别代表路程和速度。
输出格式
输出一个 24 小时制下的时间,代表 yyy 最晚的出发时间。
输出格式为 HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0。
样例 #1
样例输入 #1
100 99
样例输出 #1
07:48
提示
对于 100% 的数据,1≤s,v≤104。
题解
import java.util.Scanner;
public class Main{
public static void main(String[] args){
int s, v;
int h = 7, m = 50;
int hh, mm = 0;
Scanner scanner = new Scanner(System.in);
s = scanner.nextInt();
v = scanner.nextInt();
scanner.close();
double t = (double)s / v;
if (t - (int)t >= 1e-6)
mm = (int)t + 1;
else mm = (int)t;//将 t 向上取整
//mm = (int)Math.ceil(s / (v = 0.0); //向上取整的函数
hh = mm / 60;
mm %= 60;
h -= hh;
if (h < 0) h += 24;
m -= mm;
if (m < 0) {//注意 m 也可能为 负数
h -= 1;
m += 60;
}
//System.out.println(hh + " " + mm);
if (h / 10 != 0) System.out.print(h + ":");
else System.out.print("0" + h + ":");
if (m / 10 != 0) System.out.print(m);
else System.out.print("0" + m);
//注意 t 和 m 都可能 小于 10
}
}
/*
1.输入输出:
import java.util.Scanner;//使用 Scanner 时需要创建的包
int x;
Scanner scanner = new Scanner(System.in);
x = scanner.nextInt();//输入格式
scanner.close();//关闭 scanner
System.out.print(x + y);//输出格式
2.浮点数保留 3 位小数:
第一种方法:
double v = 5.0;
System.out.println(String.format("%.3f", v));
//注意:没有小数位或者小数位不够你设置的保留数时,自动补0
第二种方法:
double v= 5.0;
DecimalFormat vf = new DecimalFormat("#.000");//设置保留三位小数
System.out.println(vf.format(v));
3.开根号运算:
int ans = 16;
ans = Math.sqrt(ans);
4.将字符串按照 相应基本数据类型 输出:
string s = 123;
int num1 = Integer.parseInt(s);
double num2 = Double.parseDouble(s);
float num3 = Float.parseFloat(s);
boolean b = Boolean.parseBooean("true");
char t = s.charAt(1);//将字符串中第一个字符取出
5.向上取整:
int x = (int)Math.ceil(100.0 / 99) //此处答案为 2
*/