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);
	}
}
發佈了92 篇原創文章 · 獲贊 285 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章