用java编写一个程序,来验证用户输入的数是不是2的阶次方

package com.stella;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
 * 获取用户输入的数
 * @author Administrator
 *
 */
public class GetUserInput {
	private static String str;
	/**
	 * 获取用户输入
	 */
	private static void getUserInput(){
		BufferedReader rb = new BufferedReader(new InputStreamReader(System.in));
		try {
			str = rb.readLine();
			
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("io异常!");
		}
	}
	/**
	 * 将用户输入的字符串类型转换为Integer类型
	 * @return
	 */
	public static Integer getInt(){
		getUserInput();
		if(str == null || str.trim().equals("")){
			throw new RuntimeException("用户输入不能为空!");
		}
		try{
			return Integer.valueOf(str);
		}catch(NumberFormatException e){
			throw new NumberFormatException("您输入的类型有误!");
		}
	}
}

  

package com.stella;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Test {
	public static void main(String[] args) {
		
		while(true){
			System.out.println("请输入一个整数");
			int num = GetUserInput.getInt();
			boolean a = judge(num);
			if(a){
				System.out.println("这个数是2的阶乘");
			}else{
				System.out.println("这个数不是2的阶乘");
			}
		}
	}
	/**
	 * 获得用户输入的一个整数,然后计算它的平方和立方
	 */
	public static void value(){
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			String str = br.readLine();
			if(str != null && !str.equals("")){
				int v = Integer.valueOf(str);
				print(v);
			}
		} catch (NumberFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		
	}
	/**
	 * 求一个数的平方和立方
	 * @param is
	 */
	public static void print(int is){
		System.out.println(is + "的平方值和立方值:");
		System.out.println("平方值:" + is*is);
		System.out.println("立方值:" + is*is*is);
	}
	/**
	 * 判断一个数是不是2的阶乘
	 * 原理是:如果一个书是2的阶乘,则这个数减1和它自己进行“&”位运算结果为0
	 * @param x
	 * @return
	 */
	public static boolean judge(Integer x){
		if((x & (x - 1)) == 0 && x != null){
			return true;
		}
		return false;
	}
}

  

posted @ 2014-04-06 21:40  lxricecream  阅读(483)  评论(0)    收藏  举报