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

01-需求:

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

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

02-思路:

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

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

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

03-代码:

1.第一种方式

package com.eleven;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。 
 * 思路:
 * 十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。
 * 
 * @author eleven
 *
 */
public class ThreeDemoTest {
	public static void main(String[] args) {

		// 我们可以通过 Scanner 类来获取用户的输入。
		Scanner in = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		try {
			// 输入一个字符串
			String s = in.nextLine();
			
			// 将字符串转换成整数类型,转成十进制整数
			int num = Integer.valueOf(s);
			// 创建一个ArrayList数组,存放余数
			ArrayList<Integer> remainder = new ArrayList<Integer>();
			// 商初始化为0
			int shang = 0;
			// 判断num/2的值大于0
			while (num / 2 > 0) {
				shang = num / 2; // 将num/2的值赋给shang
				remainder.add(num % 2); // 将num%2的值添加到余数(remainder)中,能被整除的存0,不能被整除的存1
				num = shang; // 将shang的值赋给num,反复执行,直到num/2的值小于2为止
			}
			if (num == 1)
				remainder.add(1); // 当num为1时,将1添加到余数中,也就是arraylist集合里面。
			System.out.println(remainder); // 此时打印出来的并不是我们想要的结果[0, 0, 1, 0, 1, 1, 1, 1, 1]
			System.out.println(remainder.size()); // 9
			// 根据remainder的长度进行减的操作,将值依次打印出来,就是将余数里面的值倒序打印出来。
			for (int i = remainder.size() - 1; i >= 0; i--) {
				System.out.print(remainder.get(i)); // 500的二进制是111110100
			}
			// 如不知道异常的类型,可以使用Exception,由于Exception是所有异常的父类,所以可以直接抛出任何类型的异常,再打印异常栈信息就可以得知是什么类型异常
		} catch (NumberFormatException e) {	// 这里的异常类型是数字转换异常,所以使用NumberFormatException
			e.printStackTrace();	// 打印异常栈信息!!
		}
	}

}

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

package com.eleven.test;

import java.util.Scanner;

public class ThreeDemoTestYH {
	public static void main(String[] args) {
		// 01|简单写法
		int a = 500;
		String b = Integer.toBinaryString(a);
		System.out.println(b);
		// 02|直接调用Integer提供的API中的方法toBinaryString()
		Scanner in = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		Integer x = in.nextInt();
		String y = Integer.toBinaryString(x);
		in.close();
		System.out.println(y);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值