如果否则 - 如果不工作

dra*_*fly 1 java android if-statement

我有一个if else-if块如下,但它只能工作一半.如果部分工作,第一个if-else也是如此.但是,即使在它们应该评估为true的情况下,最后两个if-else语句也永远不会被执行.谁能告诉我我在这里做错了什么?

//Getting current date and time
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_MONTH);                     
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);

//Getting user-entered date and time values.
String[] selected_date_string = date.getText().toString().split("-");
int selected_month = Integer.parseInt(selected_date_string[0]);
int selected_day = Integer.parseInt(selected_date_string[1]);
int selected_year = Integer.parseInt(selected_date_string[2]);
String[] selected_time_string = time.getText().toString().split(":");
int selected_hour = Integer.parseInt(selected_time_string[0]);
int selected_minute = Integer.parseInt(selected_time_string[1]);

boolean has_error = false;
int error = -1;

//PROBLEM AREA
if (selected_year < year) {
    error = 1;
} else if ((selected_year == year) && (selected_month < month)) {
    error = 2;
} else if ((selected_year == year) && (selected_month == month)) {//this part doesnt work no matter what I do!
    error = 3;
} else if ((selected_year == year) && (selected_month == month) && (selected_day == day)) //this part too!
    if (selected_hour < hour) 
        error = 4;
Run Code Online (Sandbox Code Playgroud)

提前致谢!

And*_*s_D 7

通常我们会忘记MONTHCalendar零基础上,换句话说:1月的价值是0和不是1,正如我们所期望的那样.

你可能不得不减少你的selected_month......


在代码中使用此行:

int selected_month = Integer.parseInt(selected_date_string[0]) - 1;
Run Code Online (Sandbox Code Playgroud)