我无法在此程序中使用所有if语句

时间:2014-04-21 08:59:39

标签: java variables loops

我无法在整个程序中使用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;
            }

        }
    }
}

3 个答案:

答案 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

,它会将表达式计算为true
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 ");
}