博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
键盘输入字符、数字,并判断数是否是2的阶次方数
阅读量:5009 次
发布时间:2019-06-12

本文共 2269 字,大约阅读时间需要 7 分钟。

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

你可能感兴趣的文章
【网络流24题】No. 13 星际转移问题 (网络判定 最大流)
查看>>
解析$.grep()源码及透过$.grep()看(两次取反)!!的作用
查看>>
[模板] 字符串hash
查看>>
SGU438_The Glorious Karlutka River =)
查看>>
Linux集群及LVS简介
查看>>
简单几何(直线与圆的交点) ZOJ Collision 3728
查看>>
Codeforces Round #327 (Div. 2)
查看>>
如何解决Provisional headers are shown问题(转)
查看>>
开发网站遇到的bug
查看>>
实现简单的接口自动化测试平台
查看>>
EXCEL工作表合并
查看>>
Prime Path
查看>>
ODAC(V9.5.15) 学习笔记(三)TOraSession(2)
查看>>
单纯形法
查看>>
SQL中的replace函数
查看>>
java中的类型安全问题-Type safety: Unchecked cast from Object to ...
查看>>
如何解决最后一个尾注引用显示与致谢混为一谈的问题-下
查看>>
Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...
查看>>
阅读之https及加密原理
查看>>
HDOJ4550 卡片游戏 随便销毁内存的代价就是wa//string类的一些用法
查看>>