我已经有了这段代码,该代码应该根据小时,分钟和AM / PM告诉一天中已经花费了多少时间。如果时间不是实时时间(下午44:65),则应该运行一种无效的时间格式,但是每次我输入时,它都会记录该错误。
import java.util.Scanner;
public class main {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String time_inp;
System.out.print("Enter the time in the format hours:minutes AM/PM : ");
time_inp=sc.nextLine();
String[] time = time_inp.split(":");
int hours = Integer.valueOf(time[0]);
String[] time1=time[1].split(" ");
int minutes = Integer.valueOf(time1[0]);
String ampm = time1[1];
int new_hour=0,new_minutes=0;
if((minutes>60)||(hours>12)||(!ampm.equals("AM"))||(!ampm.equals("PM")))
{
System.out.println("Invalid Time Format");
System.exit(0);
}
if(ampm.equals("AM"))
{
new_hour=hours;
new_minutes=minutes;
}
else if(ampm.equals("PM"))
{
new_hour=12+hours;
new_minutes=minutes;
}
System.out.println("Time elapsed : "+new_hour+" hours "+new_minutes+" minutes");
}
}
下午1:30的输出应为
Time elapsed : 13 hours 30 minutes
答案 0 :(得分:0)
您的 if 条件始终被评估为true
if((minutes>60)||(hours>12)||(!ampm.equals("AM"))||(!ampm.equals("PM")))
看看最后两个检查。不管您输入什么(AM / PM),都将是其中之一。因此,总是执行 if 块。
正确的必须是
if ((minutes > 60) || (hours > 12) || (!ampm.equals("AM") && (!ampm.equals("PM"))))
答案 1 :(得分:-1)
我必须进行测试才能确定,但是除了用户输入之外,您似乎还正在读prompt
。您可能正在尝试解析:
“以小时:分钟AM / PM的格式输入时间:”为
integer
。