java 将位映射到字符串
java mappings bits to strings
我们将星期几表示为整数。
1 = sunday
2 = monday
4 = tuesday
8 = wednesday
16 = thursday
32 = friday
64 = saturday
当我们得到一个 88 的整数时 - 这意味着 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;
}
只需使用包含日期和循环的数组。
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;
}
您可以使用数字的二进制表示: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");
}
我们将星期几表示为整数。
1 = sunday
2 = monday
4 = tuesday
8 = wednesday
16 = thursday
32 = friday
64 = saturday
当我们得到一个 88 的整数时 - 这意味着 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;
}
只需使用包含日期和循环的数组。
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;
}
您可以使用数字的二进制表示: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");
}