進(jìn)制轉(zhuǎn)換

Paste_Image.png
package sdf.sdf.df;

import java.util.Scanner;

public class play {
    public static int ZhuanToTen(int a, String str) { // 其它進(jìn)制轉(zhuǎn)成十進(jìn)制
        double d = 0; // 聲明轉(zhuǎn)換后的數(shù)值
        String subString;
        // 根據(jù)字符串的長度循環(huán)獲得單個元素
        for (int i = 0; i < str.length(); i++) {
            subString = str.substring(i, i + 1); // 將字符串按循環(huán)截取
            if (a == 16) { // 判斷是否是十六進(jìn)制
                subString = sixteenToNumber(subString); // 將字母轉(zhuǎn)換成數(shù)字
            }
            d += Integer.parseInt(subString) // 返回轉(zhuǎn)換的結(jié)果
                    * Math.pow(a, str.length() - i - 1);
        }
        return (int) d;
    }

    public static String TenToNumber(int a, String str) { // 十進(jìn)制轉(zhuǎn)成其他進(jìn)制
        int current = Integer.parseInt(str); // 將字符轉(zhuǎn)換成整數(shù)
        String opResult = "";
        // 判斷轉(zhuǎn)換后的數(shù)制是否是16進(jìn)制
        if (a == 16) {
            // 判斷傳入的數(shù)是否大于16,大于則逢16進(jìn)一
            while (current >= a) {
                opResult += sixteenNumberToChar(current % a);// 將數(shù)字轉(zhuǎn)換成字母
                current /= a;
            }
            if (current != 0)
                opResult += sixteenNumberToChar(current);
        } else {
            // 判斷傳入的值是否大于轉(zhuǎn)換后的數(shù)制
            while (current >= a) {
                opResult += current % a;
                current /= a;
            }
            if (current != 0)
                opResult += current;
        }
        String riResult = ""; // 倒序二進(jìn)制字符串
        // 根據(jù)二進(jìn)制的轉(zhuǎn)換方式進(jìn)行循環(huán)輸出
        for (int i = opResult.length() - 1; i >= 0; i--) {
            riResult = riResult + opResult.substring(i, i + 1);
        }
        return riResult;
    }

    public static String sixteenToNumber(String s) { // 十六進(jìn)制字母對應(yīng)數(shù)字
        String num = "";
        if (s.equals("A") || s.equals("a"))
            num = "10";
        else if (s.equals("B") || s.equals("b"))
            num = "11";
        else if (s.equals("C") || s.equals("c"))
            num = "12";
        else if (s.equals("D") || s.equals("d"))
            num = "13";
        else if (s.equals("E") || s.equals("e"))
            num = "14";
        else if (s.equals("F") || s.equals("f"))
            num = "15";
        else
            num = s;
        return num;
    }

    public static String sixteenNumberToChar(int num) { // 十六進(jìn)制數(shù)字對應(yīng)字母
        String c = "";
        if (num == 10)
            c = "A";
        else if (num == 11)
            c = "B";
        else if (num == 12)
            c = "C";
        else if (num == 13)
            c = "D";
        else if (num == 14)
            c = "E";
        else if (num == 15)
            c = "F";
        else
            c = String.valueOf(num);
        return c;
    }

    public static void main(String[] args) { // java程序的主入口處
        String number; // 要轉(zhuǎn)換的數(shù)
        int a, b; // a表示轉(zhuǎn)換前的進(jìn)制,b表示轉(zhuǎn)換后的進(jìn)制
        String result = ""; // 經(jīng)過數(shù)制轉(zhuǎn)換后的結(jié)果
        String stop = "";
        Scanner read = new Scanner(System.in); // 得到用戶輸入的值
        do {
            System.out.println("輸入三個整數(shù):待轉(zhuǎn)換的數(shù)據(jù)   要轉(zhuǎn)換之前的進(jìn)制  要轉(zhuǎn)換后的進(jìn)制");
            number = read.next();
            a = read.nextInt();
            b = read.nextInt();
            stop = "Quit";
        } while (stop != "Quit");
        try {
            if (a != 10) { // 判斷轉(zhuǎn)換前的數(shù)制是否是十進(jìn)制
                String temp = String.valueOf(ZhuanToTen(a, number)); // 轉(zhuǎn)換成十進(jìn)制的數(shù)
                result = String.valueOf(TenToNumber(b, temp)); // 十進(jìn)制轉(zhuǎn)換成其它進(jìn)制
            } else {
                result = String.valueOf(TenToNumber(b, number)); // 十進(jìn)制轉(zhuǎn)換成其它進(jìn)制
            }
            System.out.println(a + "進(jìn)制的數(shù):" + number + ",轉(zhuǎn)換成" + b + "進(jìn)制的數(shù)為:"
                    + result);
        } catch (Exception e) {
            System.out.print("轉(zhuǎn)換失敗,請正確輸入!");
            System.exit(-1);
        }
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容