1

我知道这似乎是一个逻辑错误,我已经审查了几次,一切似乎都是正确的,如果有人能指出我正确的方向:

我们有一项在特定时间(上午 10 点、下午 4 点和晚上 11 点)调用的服务。该服务工作正常,通知已创建。但是,当我们使用逻辑来比较星期几时,即使它不是所讨论的日期,它也会被每天调用。

代码片段:

public void onStart(Intent intent, int startId) {
    Calendar c = Calendar.getInstance();
    int day = c.get(Calendar.DAY_OF_WEEK);
    int hour = c.get(Calendar.HOUR_OF_DAY);
    if (day == Calendar.SATURDAY || day == Calendar.WEDNESDAY); //always true
    {
        if(hour == 10 || hour == 16) //correct regardless of anterior
        {
            //create notification


        }
        else if(hora == 23)
        {
            //create other type of intent

        }
    }
    super.onStart(intent, startId);     

}
4

2 回答 2

6

您没有得到预期的结果,因为您在 if 语句之后放置了 semi 列

 if (day == Calendar.SATURDAY || day == Calendar.WEDNESDAY);

删除半列。

于 2012-05-04T16:40:43.330 回答
1

实际上它并不总是正确的。分号将 if 语句与下面的代码块分开,使它们独立。

所以 if 语句被评估,然后代码块被执行而不依赖 if 结果来确定是否应该执行。

于 2012-05-04T16:45:57.633 回答