当前位置: 首页 > news >正文

键盘输入字符、数字,并判断数是否是2的阶次方数

1、从键盘输入数

  键盘的标砖输入格式:

 1 package cn.itcast.keyboard.demo;
 2 
 3 import java.io.*;
 4 public class BufferedReaderDemo02 {
 5     public static void main(String[] args) {
 6         BufferedReader buf = null;
 7         //从键盘输入一行字符,保存到字符串str中
 8         buf = new BufferedReader(new InputStreamReader(System.in));
 9         String str = null;
10         System.out.println("请输入内容:");
11         try{
12             str = buf.readLine();    //读取一行,只返回回车符之前的数据内容
13         }catch(IOException e){
14             e.printStackTrace();
15         }
16         System.out.println("输入内容为:"+str);
17     }
18 }

此段程序得到的是字符串

2、要求输入的是数字:

  在Java中,没有像C语言那样有一个专供接受键盘输入值的scanf函数,所以一般的做法是从键盘输入一行字符,保存到字符串s中,再将字符组成的字符串s转换为整型数据后返回

 

 1 package cn.itcast.keyboard.demo;
 2 
 3 import java.io.*;
 4 
 5 public class PrintResult {
 6     public static void main(String[] args) {
 7         Result result=new Result();
 8         System.out.println("请输入一个整数:");
 9         int a=InputData.getInt();
10         result.print(a);
11     }
12 }
13     class InputData{//定义从键盘输入数据的类
14         static private String s="";
15         static public void input(){//从键盘输入一行字符,保存到字符串s中
16             BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
17             try{
18                 s=bu.readLine();//读取一行,只返回回车符之前的数据内容
19             }
20             catch(Exception e){}
21              
22         }
23          
24         static public int getInt(){//静态方法可直接用类名调用
25             input();
26             return Integer.parseInt(s);//将字符组成的字符串s转换为整型数据后返回
27         }
28     }
29     class Result{
30         void print(int d){
31             System.out.println(d+"的平方:"+d*d);
32             System.out.println(d+"的立方:"+d*d*d);
33         }
34     }

 3、判断一个数是否是2的阶次方数

如果一个数是2的阶次方数,那么它的二进制数的首位一般是1,后面若干个0,。比如8就是1000,64就是1000000。如果将这个数减1后,再与该数做和(&)运算,则应该全为0(如,8与7,8的二进制数1000,7的二进制数111,它们做和运算即8&7==0的,所以推出,((d-1)&(d))==0)

只需要将上述程序中的Result类改为:

 1 class Result{
 2         void print(int d){
 3             System.out.println(d+"的平方:"+d*d);
 4             System.out.println(d+"的立方:"+d*d*d);
 5             if(((d-1)&d)==0&&(d!=0))
 6                 System.out.println("是2的阶次");
 7                 else
 8                 System.out.println("不是2的阶次");
 9         }
10     }

 

转载于:https://www.cnblogs.com/XuGuobao/p/7326448.html

相关文章:

  • [noip2015 d1t2] 信息传递
  • 【模板】一坨数学算法
  • 单词首字母变大写-vue
  • HDU 5402 Travelling Salesman Problem(棋盘染色 构造 多校啊)
  • oracle归档日志增长过快处理方法
  • 对WebSocket技术的学习与探索(二)
  • noip 2016 Day T1 组合数
  • Python装饰器主要用法
  • JMeter学习-004-WEB脚本入门实战
  • JDBC的链接及封装
  • 对于盒模型的宽高获取填坑
  • 普通程序员如何入门AI
  • 技术分享之AQS——内容提要
  • ansible基本使用教程
  • Kafka【第一篇】Kafka集群搭建
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • CSS 三角实现
  • Selenium实战教程系列(二)---元素定位
  • 创建一个Struts2项目maven 方式
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 力扣(LeetCode)21
  • 悄悄地说一个bug
  • 【云吞铺子】性能抖动剖析(二)
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​2020 年大前端技术趋势解读
  • #git 撤消对文件的更改
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Matlab)使用竞争神经网络实现数据聚类
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)负载均衡,回话保持,cookie
  • (转)树状数组
  • ... 是什么 ?... 有什么用处?
  • .net MySql
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @media screen 针对不同移动设备
  • @Transactional 竟也能解决分布式事务?
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [C/C++随笔] char与unsigned char区别
  • [IE9] IE9 Beta崩溃问题解决方案
  • [iOS]-NSTimer与循环引用的理解
  • [Java基础] Java中List.remove报错UnsupportedOperationException
  • [NISACTF 2022]sign-ezc++
  • [No000016]为什么假期计划总是做不到?
  • [pluginviteimport-analysis] vite 提示jsx语法报错
  • [python] RRT快速拓展随机树
  • [SoapUI] 通过Groovy写文本文件
  • [UE4]动画蓝图的编辑全流程(Animation Blueprint)
  • [uni-app] uni.showToast 一闪而过问题/设定时间无效/1秒即逝
  • [代码]HTML页面如何接收外部参数
  • [代码实战和详解]VGG16