首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java位到字符串的映射

java位到字符串的映射
EN

Stack Overflow用户
提问于 2015-12-08 23:05:27
回答 2查看 51关注 0票数 0

我们每周有几天被表示为国家统计局。

代码语言:javascript
复制
1 = sunday
2 = monday
4 = tuesday
8 = wednesday
16 = thursday
32 = friday
64 = saturday

当我们得到一个88的int -这意味着64 + 16 + 8,所以我们需要推导出时间表是星期三,星期四和星期六。

我是这样做的,但我想还有更好的方法.

代码语言:javascript
复制
public List<String> getDays(int input) {
    List days = new ArrayList();
    days.add( (sunday & input!=0) ? "SUN" : "");
    days.add( (monday & input!=0) ? "MON" : ""); 
    ...
    ...
    return days;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-08 23:21:22

只需使用包含天数和循环的数组。

代码语言:javascript
复制
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;
}
票数 0
EN

Stack Overflow用户

发布于 2015-12-08 23:23:24

您可以使用数字的二进制表示:88是二进制的1011000,所以只需检查设置为"one“的位,并打印一周中的相应日期。

代码语言:javascript
复制
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");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34167800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档