我无法在整个程序中使用if语句,即一个在公共程序中,另一个在case语句帮助中 我希望程序打印整个日期,如果没有错误或只是错误我该怎么办
public class date {
public static void main(String[] args) {
Scanner kbd = new Scanner(System.in);
boolean yn = true;
boolean bn = true;
int date,
month,
year;
System.out.println("Date:");
date = kbd.nextInt();
System.out.println("month:");
month = kbd.nextInt();
System.out.println("year:");
year = kbd.nextInt();
if (date < 0 && date > 32) {
System.out.println("**Error** invalid day value ");
}
while (yn) {
System.out.println("**error** invalid month value");
month = kbd.nextInt();
switch (month) {
case 1:
System.out.println("January");
yn = false;
break;
case 2:
if (date < 0 && date > 30) {
System.out.println("**Error** February has only 29 days ");
}
yn = false;
break;
case 3:
System.out.println("March");
yn = false;
break;
case 4:
System.out.println("April");
yn = false;
break;
case 5:
System.out.println("May");
yn = false;
break;
case 6:
System.out.println("June");
yn = false;
break;
case 7:
System.out.println("July");
yn = false;
break;
case 8:
System.out.println("August");
yn = false;
break;
case 9:
System.out.println("September");
yn = false;
break;
case 10:
System.out.println("October");
yn = false;
break;
case 11:
System.out.println("November");
yn = false;
break;
case 12:
System.out.println("December");
yn = false;
break;
default:
System.out.println("Invalid month");
yn = true;
break;
}
}
}
}
答案 0 :(得分:1)
&&
表示逻辑AND。所以只有案例表达
condition1 && condition2
如果两个条件都将评估为true
,则可以评估为true
。在其他情况下,如果只有一个条件是true
但是其他条件是false
,则整个表达式将被计算为false
。
也许这张表有助于形象化(T
代表真,F
代表假)
p | q | p && q
---+---+-------
T | T | T
F | T | F
T | F | F
F | F | F
因此,如果if (data<0 && data>32)
data
的条件为<0
-1
,则data<0
左侧条件true
将被评估为false
,但正确的条件将评估为-1>32
,因为false
根本不正确。因此整个条件评估为||
。
你想要的是逻辑OR运算符true
,如果至少有一个条件是 p | q | p || q
---+---+-------
T | T | T
F | T | T
T | F | T
F | F | F
if (data<0 || data>32)
所以尝试使用{{1}}
答案 1 :(得分:0)
case 2:
if (date <0 && date >30){
System.out.println("**Error** February has only 29 days ");
}
根据你的代码,它应该满足条件(即)<0 and >30
进入switch语句块。
所以在(||)or
case 2:
条件
答案 2 :(得分:0)
将和运算符(&&
)更改为您的条件中的或运算符(||
)。另一方面,检查应包括0和32。
if (date <= 0 || date >= 32){
System.out.println("**Error** invalid day value ");
}