1. 程式人生 > >【模板小程序】任意長度十進制數轉化為二進制(java實現)

【模板小程序】任意長度十進制數轉化為二進制(java實現)

轉換 obi number 格式 bigint reverse com rev ole

媽媽再也不用擔心十進制數過大了233

import com.google.common.base.Strings;

import java.math.BigInteger;
import java.util.Scanner;

/**
 * 任意長度十進制數轉化為二進制
 */
public class AnyNumberConverterFromDecimalToBinary {

    /**
     *
     * @param srcNum 待轉換的十進制數
     * @return 二進制字符串
     */
    private static String convertFromDecimalToBinary(String srcNum){
        BigInteger src = new BigInteger(srcNum);
        StringBuilder sb = new StringBuilder();
        BigInteger zero = new BigInteger("0");
        BigInteger two = new BigInteger("2");
        while (!zero.equals(src)) {
            sb.append(src.remainder(two));
            src = src.divide(two);
        }
        return sb.reverse().toString();
    }

    /**
     * 格式檢查
     * @param srcNum
     * @return 若可以轉化為整數, 返回true; 否則返回false
     */
    private static boolean FormatCheck(String srcNum){
        if (Strings.isNullOrEmpty(srcNum)){
            return false;
        }
        if (!isDigit(srcNum)) {
            return false;
        }
        return true;
    }

    /**
     * 判斷一個字符串中每個字符是否都為數字
     * @param strNum
     * @return 若每個字符都是數字, 返回true; 否則返回 false
     */
    private static boolean isDigit(String strNum) {
        return strNum.matches("[0-9]{1,}");
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String srcNum = sc.nextLine();
        if (!FormatCheck(srcNum)) {
            System.out.println("格式錯誤");
            return ;
        }
        System.out.println(convertFromDecimalToBinary(srcNum));
    }
    
}

【模板小程序】任意長度十進制數轉化為二進制(java實現)