zoukankan      html  css  js  c++  java
  • 键盘输入字符、数字,并判断数是否是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     }
  • 相关阅读:
    lines-HDU5124(区间处理 +离散化)
    Reorder the Books-HDU5500
    Bad Hair Day-POJ3250(简单的入栈出栈)
    Count the Colors-ZOJ1610(线段树区间求)
    Just a Hook-HDU1698(线段树求区间)
    Mayor's posters-POJ2528(线段树+离散化)
    A Simple Problem with Integers-POJ3468
    Strongly connected-HDU4635
    Caocao's Bridges-HDU4738(Tarjin+求桥)
    Warm up-HUD4612(树的直径+Tarjin缩点)
  • 原文地址:https://www.cnblogs.com/XuGuobao/p/7326448.html
Copyright © 2011-2022 走看看