判断 一个整数 是不是 2 的阶次方

news2024/10/6 18:26:11

问题:判断 一个整数 是不是 2 的阶次方

思路:

1、先用while循环,判断该数字是否大于1
2、大于1,那么进行取模2,判断该数字是否是偶数
3、是偶数,那么除以2,看能不能整除掉,整除到最后为1,返回true
4、注意:1 不是2 的阶次方,输入1的话,直接返回false。

代码

简单在main中调用
在这里插入图片描述

写个while,可以重复在控制台中输入并进行判断,只有输入0才退出程序。
在这里插入图片描述

package cn.ljh.algorithmic;

import lombok.SneakyThrows;

import java.util.Scanner;

/**
 * author JH
 * 写出代码判断一个整数是不是2的阶次方
 * 阶次方:阶次方是指一个数的指数部分,表示该数重复乘以自身的次数
 * Scanner: 提供了一种方便的方式来解析基本数据类型和字符串,并从输入源中获取用户输入或从文件中读取数据
 * System.in  代表了键盘输入流,提供了一种方便的方法来读取用户在控制台上输入的内容
 * scanner.nextInt()  从输入流中读取下一个整数
 */
public class Demo02
{
    @SneakyThrows
    public static void main(String[] args)
    {
        //在控制台重复输入,重复判断:
        //创建Scanner对象,用于获取用户在控制台的输入
        Scanner scanner = new Scanner(System.in);
        //true,表示一直循环
        while (true)
        {
            System.err.println("请输入一个整数(需要结束的话请输入0):");
            //从控制台中读取用户输入的数据
            int num = scanner.nextInt();
            if (num == 0)
            {
                System.err.println("程序结束");
                //跳出循环
                break;
            }
            if (check(num))
            {
                System.err.println(num + " 【是】2的阶次方   √");
                Thread.sleep(1000);
                System.out.println();
            } else
            {
                System.err.println(num + " 【不是】2的阶次方   X");
                Thread.sleep(1000);
                System.out.println();
            }
        }
        //关闭输入流
        scanner.close();
    }



    //判断一个整数是不是2的阶次方
    public static boolean check(int num)
    {
        //判断标志
        boolean flag = true;

        //1 不是 2 的阶次方
        if (num == 1){
            return false;
        }
        //循环判断
        while (num > 1)
        {
            //判断数字是不是偶数
            if (num % 2 == 0)
            {
                //如果是偶数,每次都除以2
                num = num / 2;
            } else
            {
                flag = false;
                //跳出当前的循环
                break;
            }
        }
        return flag;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1257904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(商品和购物车)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现(商品和购物车) 商品热销排行 1 商品-创建数据表 1.使用use命令先选中store数据库。 USE store;2.在store数据库中创建t_product数据表。 CREATE TABLE t_product (id int(20) NOT …

【C++】——标准模板库STL作业(其三)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

TikTok行业趋势分析:未来最有潜力的创作方向

引言 TikTok作为全球最受欢迎的短视频平台之一,一直处于创意和潮流的前沿。随着用户基数的不断增加和功能的不断升级,TikTok行业的创作方向也在不断演变。本文将对TikTok行业趋势进行深入分析,探讨未来最有潜力的创作方向,为创作者…

Luminar Neo1.16.0(ai智能图像处理)

Luminar Neo是一款ai智能图像编辑软件,它专注于使用人工智能技术来实现对照片的快速、高效和创造性的编辑。 具体来说,Luminar Neo可以自动移除景观或旅行照片中令人分心的元素,例如电话线、电线杆等,从而增强照片的整体质量。同…

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(用户资料修改)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现(用户资料修改) 该项目分析着重于设计和实现基于SpringBootMyBatis框架的电脑商城。首先,通过深入分析项目所需数据,包括用户、商品、商品类别、收藏、订单、购物…

门店越多运营反而越轻松,怎么做到的?

持续扩张是绝大多数消费品牌的共同愿望。但随着规模不断扩大,品牌也将面临「甜蜜的烦恼」:组织变得庞大,事务变得冗杂,效率因此越来越低下。 门店运营也不例外: Mary 是某知名连锁茶饮总部运营,旗下门店遍布…

三、Lua变量

文章目录 一、变量分类二、变量赋值三、索引 一、变量分类 lua变量分为全局变量,局部变量。 全局变量:默认,全局有效。 局部变量:从作用范围开始到作用范围结束,需加local 修饰。 a1function ff()local b1 endprint(a…

accelerate的使用说明

1 多卡(GPU)使用方法 终端输入指令,生成问答页面 accelerate config 这个方法也是可以的 2 后面修改直接找到这个yaml文件进行修改即可 cd ~/.cache/huggingface/accelerate vim default_config.yaml 进入vim进行修改 3 单卡(GPU)使用方法 vim default_config.…

leetCode 841. 钥匙和房间 图遍历 深度优先遍历+广度优先遍历 + 图解

841. 钥匙和房间 - 力扣(LeetCode) 有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。当你进入一个房…

提升APP软件的用户体验方法

提升APP软件的用户体验是确保用户满意度和应用成功的关键。以下是一些方法,可以帮助提升APP的用户体验,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.简洁的用户界面设计: …

计算机组成原理-Cache和主存的映射方式

文章目录 总览全相联映射(随意放)直接映射(只能放固定位置)组相联映射(可放到特定分组)总结 总览 组相联映射时,得到对应的Cache组后,该组哪个地方有空就放主存的内容 标记用来对应…

新时代线下门店如何能够降低创业者的风险?

随着社会的发展和科技的进步,共享经济已经渗透到生活的各个领域。在这个大背景下,共享门店共享股东的商业模式应运而生,为传统门店经营带来了全新的思路和方向。而下面这个故事诠释了一个普通青年的底层崛起之路。 在繁华的都市中&#xff0c…

送PDF书 | 豆瓣9.2分,超250万Python新手的选择!蟒蛇书入门到实践

在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。 …

基于C#实现梳排序

为什么取名为梳,可能每个梳都有自己的 gap 吧,大梳子 gap 大一点,小梳子 gap 小一点。上一篇我们看到鸡尾酒排序是在冒泡排序上做了一些优化,将单向的比较变成了双向,同样这里的梳排序也是在冒泡排序上做了一些优化。 …

DevEco Studio在预览器上快速定位元素所在的组件代码位置

常规开发过程中 如果我们的组件过多 找对象就会比较困难 我们可以点击如下图指向位置 这边呢 就有一个组件树 我们可以快速定位到当前元素的代码位置 同时你在点元素的时候 代码它也给你标记出来了

python的pandas中如何在dataframe中插入一行或一列数据?

dataframe类型是如何插入一行或一列数据的呢?这个需求在本文中将会进行讨论。相比较ndarray类型的同样的“数据插入”需求,dataframe的实现方式,则不是很好用。本文以一个dataframe类型变量为例,测试插入一行数据或者一列数据的方…

什么是数据填报?

数据填报是报表用以满足用户提出的灵活报送数据的需求,能快速开发各类数据采集系统的专业功能。多源填报模型,可实现数据的多源抽取与多源回填,在同一张填报表上实现数据提交至多个不同的数据表、数据库。 随着业务快速变化和扩大&#xff0c…

laya2.13.3添加Button后报错

在这里会出现遍历出"remove"的字符串,这个字符串是项目中在Array.prototype.remove添加的function,在这里会被遍历出来,就会报错。 解决方式:将tex提前判断即可

独立创业者的机会:跨境电商的微企业革命

在全球数字化和互联网技术的浪潮下,独立创业者们正迎来了一个前所未有的机遇:跨境电商的微企业革命。随着全球市场的无缝连接和数字支付的普及,微型企业在跨境贸易中扮演着越来越重要的角色,这不仅为创业者提供了更广阔的市场&…

Chrome浏览器显示overleaf布局混乱

Chrome浏览器显示overleaf布局混乱 Abstract overleaf在mac chrome上布局显示混乱,如下图: 最终解决方案是更换浏览器至safari,结果就显示正常了。 总结反思 不在一个地方死磕,有的时候可以换个思路解决问题。