键盘输入字符、数字,并判断数是否是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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值