我们每周有几天被表示为国家统计局。
1 = sunday
2 = monday
4 = tuesday
8 = wednesday
16 = thursday
32 = friday
64 = saturday当我们得到一个88的int -这意味着64 + 16 + 8,所以我们需要推导出时间表是星期三,星期四和星期六。
我是这样做的,但我想还有更好的方法.
public List<String> getDays(int input) {
List days = new ArrayList();
days.add( (sunday & input!=0) ? "SUN" : "");
days.add( (monday & input!=0) ? "MON" : "");
...
...
return days;
}发布于 2015-12-08 23:21:22
只需使用包含天数和循环的数组。
public static void main(String[] args) {
System.out.println(getDays(88)); // [WED, THU, SAT]
}
public static List<String> getDays(int input){
List<String> days = new ArrayList<String>();
String[] daysArr = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
for (int i = 0 ; i < 7 ; i++){
if ((input & 1 << i) != 0){
days.add(daysArr[i]);
}
}
return days;
}发布于 2015-12-08 23:23:24
您可以使用数字的二进制表示:88是二进制的1011000,所以只需检查设置为"one“的位,并打印一周中的相应日期。
static void checkNumber(int x){
BigInteger bigX=BigInteger.valueOf(x);
if(bigX.testBit(0))
System.out.println("sunday");
if(bigX.testBit(1))
System.out.println("monday");
if(bigX.testBit(2))
System.out.println("tuesday");
if(bigX.testBit(3))
System.out.println("wednesday");
if(bigX.testBit(4))
System.out.println("thursday");
if(bigX.testBit(5))
System.out.println("friday");
if(bigX.testBit(6))
System.out.println("saturday");
}https://stackoverflow.com/questions/34167800
复制相似问题