A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郁金香大公爵 中级黑马   /  2015-7-31 08:59  /  181 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


/**
* 第九题:编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。
* 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。
* 提示:
* 十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。
* 其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。
*
* @author  作者--谭威
*
*
*/
public class Test9 {
public static void main(String[] args) throws IOException{
  System.out.println("请输入一个整数字符串(最大值为<" + Integer.MAX_VALUE + ">):");
  BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  String line = bufr.readLine();
  bufr.close();
  
  Test9.ChangeToBinary(line);
}
public static void ChangeToBinary(String str) {
  int shang = 0;
  int yushu;
  StringBuilder sb = new StringBuilder();
  
  double d = 0;
  try {
   d = Double.parseDouble(str);
  } catch (Exception e) {
   throw new RuntimeException("包含有非数字字符");
  }
  if (d > Integer.MAX_VALUE) {
   System.out.println("数字太大");
  } else {
   shang = Integer.parseInt(str);
   while (shang > 0) {       //转二进制数
    yushu = shang % 2;
    sb.append(yushu);
    shang = shang / 2;
   }
  }
  System.out.println(sb.reverse());
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马