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);
}
}