我一直在尝试制作一个用户可以设置的时钟。我希望用户被问到问题时,他们用"是"或"不是"这样的词来回答。我已经完成了使用此代码不改变的事情,例如用户是否想要显示秒,但当我想要字符串更改时,它不起作用,比如从AM到PM时,小时超过12。下面是我使用的:
System.out.println("AM or PM?");
Scanner TimeOfDayQ = new Scanner(System.in);
TimeOfDayStringQ = TimeOfDayQ.next();
if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) {
System.out.println("Sorry, incorrect input.");
System.exit(1);
}
...
if(Hours == 13){
if (TimeOfDayStringQ.equals("AM")) {
TimeOfDayStringQ.equals("PM");
} else {
TimeOfDayStringQ.equals("AM");
}
Hours = 1;
}
}
每次当它提示我输入任何东西时,无论我输入AM, PM还是其他方式,它都会给出我写的错误,然后退出。当我删除用错误终止程序的代码部分时,当小时等于13时,它不会将字符串从AM更改为PM。谢谢你的帮助,非常感谢。
修改代码为:
System.out.println("AM or PM?");
Scanner TimeOfDayQ = new Scanner(System.in);
TimeOfDayStringQ = TimeOfDayQ.next();
if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { // <--
System.out.println("Sorry, incorrect input.");
System.exit(1);
}
...
if(Hours == 13){
if (TimeOfDayStringQ.equals("AM")) {
TimeOfDayStringQ = "PM"; // <--
} else {
TimeOfDayStringQ = "AM"; // <--
}
Hours = 1;
}
}
你需要使用&&看它不等于"AM"也不等于"PM"
if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) {
System.out.println("Sorry, incorrect input.");
System.exit(1);
}
要清楚,你也可以写
if(!(TimeOfDayStringQ.equals("AM") || TimeOfDayStringQ.equals("PM"))){
System.out.println("Sorry, incorrect input.");
System.exit(1);
}
在代码中包含not (one or the other)
短语(记住(静音)括号)
把你的||改成&&因此,只有当答案既不是"AM"也不是"PM"时,它才会退出。