我一直在尝试制作用户可以设置的时钟。我希望用户被问到问题,他们用“是”或“否”等字回答。我已经完成了使用此代码不会改变的事情,例如用户是否想要显示秒数,但是当我想要更改字符串时,它不起作用,例如从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。感谢您的帮助,非常感谢。
答案 0 :(得分:26)
将您的代码更改为:
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;
}
}
答案 1 :(得分:13)
你想要使用&amp;&amp;看它不等于“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)
短语(记住(无声)括号)
答案 2 :(得分:1)
更改你的||和&amp;&amp;所以只有当答案是“AM”而不是“PM”时它才会退出。