03-编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。

Dear 丶 2021-09-23 16:06 224阅读 0赞

01-需求:

1.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数;

2.然后打印出这个十进制整数对应的二进制形式。

02-思路:

1.十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位;

2.接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。

3.其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。

03-代码:

1.第一种方式

  1. package com.eleven;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4. /** * 编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。 * 思路: * 十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。 * * @author eleven * */
  5. public class ThreeDemoTest {
  6. public static void main(String[] args) {
  7. // 我们可以通过 Scanner 类来获取用户的输入。
  8. Scanner in = new Scanner(System.in);
  9. System.out.println("请输入一个整数:");
  10. try {
  11. // 输入一个字符串
  12. String s = in.nextLine();
  13. // 将字符串转换成整数类型,转成十进制整数
  14. int num = Integer.valueOf(s);
  15. // 创建一个ArrayList数组,存放余数
  16. ArrayList<Integer> remainder = new ArrayList<Integer>();
  17. // 商初始化为0
  18. int shang = 0;
  19. // 判断num/2的值大于0
  20. while (num / 2 > 0) {
  21. shang = num / 2; // 将num/2的值赋给shang
  22. remainder.add(num % 2); // 将num%2的值添加到余数(remainder)中,能被整除的存0,不能被整除的存1
  23. num = shang; // 将shang的值赋给num,反复执行,直到num/2的值小于2为止
  24. }
  25. if (num == 1)
  26. remainder.add(1); // 当num为1时,将1添加到余数中,也就是arraylist集合里面。
  27. System.out.println(remainder); // 此时打印出来的并不是我们想要的结果[0, 0, 1, 0, 1, 1, 1, 1, 1]
  28. System.out.println(remainder.size()); // 9
  29. // 根据remainder的长度进行减的操作,将值依次打印出来,就是将余数里面的值倒序打印出来。
  30. for (int i = remainder.size() - 1; i >= 0; i--) {
  31. System.out.print(remainder.get(i)); // 500的二进制是111110100
  32. }
  33. // 如不知道异常的类型,可以使用Exception,由于Exception是所有异常的父类,所以可以直接抛出任何类型的异常,再打印异常栈信息就可以得知是什么类型异常
  34. } catch (NumberFormatException e) { // 这里的异常类型是数字转换异常,所以使用NumberFormatException
  35. e.printStackTrace(); // 打印异常栈信息!!
  36. }
  37. }
  38. }

2.第二种方式
如果只需要单纯的输出二进制,可以调用Integer提供的api。

  1. package com.eleven.test;
  2. import java.util.Scanner;
  3. public class ThreeDemoTestYH {
  4. public static void main(String[] args) {
  5. // 01|简单写法
  6. int a = 500;
  7. String b = Integer.toBinaryString(a);
  8. System.out.println(b);
  9. // 02|直接调用Integer提供的API中的方法toBinaryString()
  10. Scanner in = new Scanner(System.in);
  11. System.out.println("请输入一个整数:");
  12. Integer x = in.nextInt();
  13. String y = Integer.toBinaryString(x);
  14. in.close();
  15. System.out.println(y);
  16. }
  17. }

发表评论

表情:
评论列表 (有 0 条评论,224人围观)

还没有评论,来说两句吧...

相关阅读