2021-07-31

   大家好,我是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类型,先假设一种我们想要的状态,在对数据进行处理,经过一系列处理后判断它是否变化,没有变说明就是我们想要的,变了就不是我们想要的状态。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值