求:Java中一个程序实现!

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:02:36
当前12点整,时针与分针重合。到下一个12点时,求在此过程中时针与分针重叠的次数及重叠的时间(输入时分),请设计程序实现。
在调用时需要传2个参数,1个是小时,1个是分钟
给你们加分了

//如果 用指针转动以分钟为单位,那么
//时针 每分钟转 360/60*12=1/2度
//分针 每分钟转 360/60=6度
// 这样不准确,因为 实际的 指针的转动 是以秒为最小单位的
//比如 是分钟从90度转到96度(时间过了1分钟),而时针在90到96之间,
//期间 如果 是指针转动角度 以 秒钟计算的话,
//分针 慢慢和 时针重合,而 不是一下子转到 96度
//而且 在这一分钟内 时针也是要转动的 ,虽然角度很小
//为了精确 计算 指针转动的 还是 用秒 为单位
//时针 每秒转 360/60*60*12=1/120度
//分针 每秒转 360/60*60=1/10度
//秒针 每秒转 360/60=6度
//
//理论上 时针和分针重合 的 要求比 实际上要苛刻很多,
//因为必须在 某一时刻 2指针角度相等 而不是分针经过时针
//如果 是这样的 话,用一下程序检测:一次也不可能重合
float h=0;//时针 角度
float m=0;//分针 角度
float s=0;//秒针转动角度
int temp=0;
while(h<360){
h+=1.0/120;
m+=0.1;
s+=6;
if(m>=360){
m=0;
}
if(s>=360){
s=0;
}

if(h-m<=0.1&&h-m>0){

temp++;

//System.out.println(""+h*12/360+":"+m*60/360);
}
}

//结果 11次 (只看前面整数)
1.090825:5.450012
2.181869:10.899929
3.272436:16.34984