思路:使用二进制的与运算(&
),即可实现一个变量保存多个值。
假设有以下使用场景:
请选择你愿意去生活的城市:北京、上海、杭州、郑州。
可多选,要求使用一个int
变量保存用户的选择。
以下为代码实现:
- 先定义
4
个int
变量,为别表示北京、上海、杭州、郑州
。代码如下:
int 北京 = 2 << 0; // 2 二进制:10
int 上海 = 2 << 1; // 4 二进制:100
int 杭州 = 2 << 2; // 8 二进制:1000
int 郑州 = 2 << 3; // 16 二进制:10000
- 将用户选择的城市对应的变量值相加,即可得到用户的选择结果。比如用户选择了
北京、杭州、郑州
。则用户的选择结果可表示为:
int result = 北京 + 杭州 + 郑州; // 2 + 8 + 16 = 26 二进制:11010
- 要判断用户的选择结果中是否包含指定城市,只需要使用选择结果和该城市作与运算即可。如果选择结果中包含该城市,则与运算后的结果就是该城市对应的变量值。比如判断用户的选择结果中是否包含北京,代码实现如下:
int city = result & 北京; // 11010 & 10 = 10
boolean contains = (city == 北京); // true
网友评论