//计算时针和分针之间的夹角
import java.lang.Math;
public class ClockAngle {
public static void main(String[] args) {
final String time="12:37";//此处可任意填写时间
int index=time.indexOf(":");//找到:的位置
if(index==-1)return;//如果不存在:则直接退出
String strHour=time.substring(0,index);//截取小时数-字符串型
String strMinute=time.substring(index+1,time.length());//截取分钟数-字符串型
if(!checkIsNum(strHour)||!checkIsNum(strMinute))return;//如果不符合时间格式,直接退出
double hour=Double.parseDouble(strHour);//截取小时数
double minute=Double.parseDouble(strMinute);//截取分钟数
if(hour<0||hour>24||minute<0||minute>59)return;//如果小时数或分钟数,不在时间范围内,直接退出
if(hour>12)hour=hour-12;
double hourAngle=360/12*(hour+minute/60);//计算此时的时针与12点整时时针位置的夹角
double minuteAngle=360*(minute/60); //计算此时的分针与12点整时分针位置的夹角
double angle = Math.abs(hourAngle-minuteAngle);//两个结果相减的绝对值即为结果(注意,此处有可能大于180度)
double result=angle>180?360-angle:angle;//如果大于180则与360度求差得到最后结果
System.out.println("当时间是 "+time+" 时,时针和分针之间的夹角是 : "+result+" 度");
}
public static boolean checkIsNum(String temp){
for(int i=0;i<temp.length();i++){
if(!Character.isDigit(temp.charAt(i)))
return false;
}
return true;
}
}