大家好,我是coco,最近在学习Java这门语言,我想和大家分享一下我学习Java的一些心得,今天我想给大家分享的是关于boolean类型的一些使用。
在Java中对于一些特殊的数据例如,描述一个成年人是否结婚,描述一个状态(存在,不存在)等只有两种取值的数据时可以使用布尔类型;Java中的布尔类型使用boolean,取值只能是true或false(C语言中可以使用0或1表示布尔类型) 布尔类型的使用场景:一般用于布尔逻辑判断(条件分支语句或循环语句的判断条件中),除此之外,当我们了解一个对象,一个事物,一个方法的执行只有两种状态时我们可以使用boolean类型。 当然使用时也是有一些小技巧的,我在下面列举了一些。
1.求100以内的质数个数,除了1以外其他数要么是质数,要么是合数。我们就可以用boolean类型来解决,在对100以内的数字做处理时,我们可以假设这个数是质数,再对这个数进行一系列处理,如果这个数通过了一系列处理没有变,说明它是质数,否则这个数就是合数。
public static void main(String[] args) {
//定义的一个计数器,记录质数的个数
int count = 0;
//因为1既不是质数也不是合数,所以从2开始判断是否为质数,一直判断到100
for (int i = 2; i <= 100; i++) {
/**因为从2以后的数字要么是质数,要么是合数,
*所以我们可以定义一个boolean类型的值
*来表示这个数的状态在判断时,我们先假设这个数是质数
*即true表示质数false表示不是质数
*/
boolean b = true;
//质数的判断
for (int j = 2; j < i; j++) {
//i % j == 0的条件成立说明这个数不是质数(除了1和本身还能除尽其他数)
if (i % j == 0) {
//这个数不是质数,把它置为false
b = false;
//这个数既然已经确定不是质数了,就没有必要再进行判断了
break;
}
}
//质数的判断结束后b要是依然为true表示它是质数
if (b) {
//输出这个数
System.out.print(i + "\t");
//计数器加1
count++;
}
}
//最后输出结果
System.out.println();
System.out.println("100以内的质数的个数:" + count);
}
2.500个人围成一圈,开始报数,数字是3或3的倍数的人就退出,报完一圈后,开始的人接着上一个人报数,直到最后剩下一个人。 这个游戏中每个人的状态都有两种:要么在圈中玩游戏,要么退出。我们也可以用boolean类型来解决, 在游戏开始前,我们设置这500个人的状态,再按照游戏要求对每个人的状态进行处理,直到圈中剩下一个人。
public static void main(String[] args) {
/**因为每个人要么在圈中玩游戏,要么退出,
*所以我们可以定义一个boolean类型的数组来表示每个人的状态
*/
boolean[] p = new boolean[500];
//用for循环给每个人定一个初始状态
for (int i = 0; i < p.length; i++) {
//用true表示在圈中玩游戏,false表示退出,开始时每个人都在圈中玩游戏
p[i] = true;
}
//定义一个计数器,记录报数
int count = 0;
//定义一个在玩游戏的人数
int len = p.length;
//定义一个索引,用于处理人的退出
int index = 0;
//开始游戏,当len不满足len > 1表示游戏结束(此时圈中只有一个人即len=1)
while (len > 1) {
//先判断这个人在圈中玩游戏嘛
if (p[index]) {
//这个人在圈中玩游戏就报数
count++;
//处理报数报到3的人
if (count == 3) {
//让这个人退出
p[index] = false;
//在玩游戏的人数就减1
len--;
//重新开始记录报数
count = 0;
}
}
//轮到下一个人
index++;
/**判断报数是否报完一圈(注意这里的索引在上面加1后再判断的,
*判断时就不是数组的长度减1了)
*/
if (index == p.length ) {
//报数报完一圈,第一个人接着报数
index = 0;
}
}
//最后通过for循环找到游戏获胜者
for (int i = 0; i < p.length; i++) {
//游戏获胜者在圈中,所以为true
if (Objects.equals(p[i], true)) {
System.out.println(i + 1);
}
}
}
3.模拟电影院座位的订购:当我们在订购座位时有两个状态:一个是订购成功,一个是订购失败,我们可以用boolean类型的返回值来表示这个。(这里我只截取了订购座位的代码)
//用二维数组模拟电影院的座位
static int[][] seats=new int[10][10];
/**订购电影院的座位,r表示行,c表示列;
*订购电影院的座位有订购成功和失败,
*用true表示成功false表示失败
*/
public static boolean bookSeat(int r,int c){
/**为了避免座位被重选,可以用0表示没有被选,
*1表示已经有人选择用if判断该座位有没有被选
*(注意:数组的索引从0开始计数的,我们正常输入的数字是从1开始计数)
*/
if(seats[r-1][c-1]==1){
return false;
}
//执行到这一条语句,说明上一条语句没有执行
//说明订购的座位没有被别人选
seats[r-1][c-1]=1;
return true;
}
除了这些,其实还有很多类似的地方也用到了boolean类型,学生管理系统的增删查改判断,用户管理系统的登录和注册还有查询等。
总结:
我们在执行某些方法时,会需要一个返回值来判断这个这个方法是否执行成功。 我们在处理一些未知的事物,这些事物只有两种状态时,我们可以使用boolean类型,先假设一种我们想要的状态,在对数据进行处理,经过一系列处理后判断它是否变化,没有变说明就是我们想要的,变了就不是我们想要的状态。