進(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ù)字符串的長(zhǎng)度循環(huán)獲得單個(gè)元素
        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)制字母對(duì)應(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ù)字對(duì)應(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)過(guò)數(shù)制轉(zhuǎn)換后的結(jié)果
        String stop = "";
        Scanner read = new Scanner(System.in); // 得到用戶輸入的值
        do {
            System.out.println("輸入三個(gè)整數(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)換失敗,請(qǐng)正確輸入蔚出!");
            System.exit(-1);
        }
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市更米,隨后出現(xiàn)的幾起案子铣揉,更是在濱河造成了極大的恐慌娶牌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摆屯,死亡現(xiàn)場(chǎng)離奇詭異邻遏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)虐骑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門准验,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人廷没,你說(shuō)我怎么就攤上這事糊饱。” “怎么了颠黎?”我有些...
    開(kāi)封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵另锋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我狭归,道長(zhǎng)夭坪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任唉铜,我火速辦了婚禮台舱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘潭流。我一直安慰自己竞惋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布灰嫉。 她就那樣靜靜地躺著拆宛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讼撒。 梳的紋絲不亂的頭發(fā)上浑厚,一...
    開(kāi)封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音根盒,去河邊找鬼钳幅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炎滞,可吹牛的內(nèi)容都是我干的敢艰。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼册赛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钠导!你這毒婦竟也來(lái)了震嫉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤牡属,失蹤者是張志新(化名)和其女友劉穎票堵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逮栅,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悴势,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了证芭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞳浦。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖废士,靈堂內(nèi)的尸體忽然破棺而出叫潦,到底是詐尸還是另有隱情,我是刑警寧澤官硝,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布矗蕊,位于F島的核電站,受9級(jí)特大地震影響氢架,放射性物質(zhì)發(fā)生泄漏傻咖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一岖研、第九天 我趴在偏房一處隱蔽的房頂上張望卿操。 院中可真熱鬧,春花似錦孙援、人聲如沸害淤。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窥摄。三九已至,卻和暖如春础淤,著一層夾襖步出監(jiān)牢的瞬間崭放,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工鸽凶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留币砂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓玻侥,卻偏偏與公主長(zhǎng)得像道伟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1、正整數(shù)轉(zhuǎn)二進(jìn)制 2矢门、負(fù)整數(shù)轉(zhuǎn)二進(jìn)制 3盆色、小數(shù)轉(zhuǎn)二進(jìn)制
    衲誰(shuí)誰(shuí)閱讀 2,846評(píng)論 0 0
  • 《寡婦小花》你見(jiàn)過(guò)小花嗎在風(fēng)中在夕陽(yáng)浴里村口的老樹(shù)下眼神總是隨著坑洼的路起伏她再也沒(méi)有跳過(guò)舞樹(shù)葉敲打著她的腳踝打聽(tīng)...
    寧晉閱讀 419評(píng)論 0 0
  • 三月晴空的抒情 如一詞小令 藍(lán)的那一部分是我的心情 觸碰琴弦 云朵鋪開(kāi)了溫婉 我漂泊的靈魂 走不出三月的陽(yáng)輝 我的...
    劉海波a閱讀 430評(píng)論 8 7
  • 永遠(yuǎn)以積極樂(lè)觀的心態(tài)去拓展自己和身外的世界。 ——曾憲梓 有孩子暑假以來(lái)祟剔,我進(jìn)入了年內(nèi)最忙碌的時(shí)期隔躲。為了孩子少在家...
    安心悅舍閱讀 314評(píng)論 2 1