【发布时间】:2014-03-14 05:24:48
【问题描述】:
如果是周一、周二或周三,我想提前 2 天,如果是周四或周五,我想提前 2 天。但我对逻辑公式有疑问。看起来 Java 程序员没有正确设置最终值。无论星期几,第一个陈述似乎总是正确的。
import static java.util.Calendar.*;
import java.util.GregorianCalendar;
public class Demo {
public static void main(String[] args) {
GregorianCalendar gc = new GregorianCalendar();
gc.roll(DAY_OF_WEEK, 2);
if((gc.get(DAY_OF_WEEK) & (MONDAY | TUESDAY | WEDNESDAY)) == gc.get(DAY_OF_WEEK)){
System.out.println("it is monday or tuesday or wednesday");
gc.roll(DAY_OF_WEEK, 2);
}else{
System.out.println("other day");
}
}
}
【问题讨论】:
-
看起来问题出在您进行检查的按位运算中。试着先写个长篇大论:
ìf (gc.get(DAY_OF_WEEK) == MONDAY || gc.get(DAY_OF_WEEK) == TUESDAY ...). -
我知道该怎么做,但我想做得更好。
-
但我想做得更好这样会更好:性能(通过节省 0.010 毫秒)、可维护性(实际上,对于没有经验的人来说,可读性较差程序员)、可移植性、安全性、可用性、可修改性……?无论如何,如果这是您的目标,您应该将问题移至codereview.stackexchange.com