Java實(shí)現(xiàn)復(fù)雜的進(jìn)制轉(zhuǎn)換器功能示例
本文實(shí)例講述了Java實(shí)現(xiàn)復(fù)雜的進(jìn)制轉(zhuǎn)換器功能。分享給大家供大家參考,具體如下:
這是用java寫的進(jìn)制轉(zhuǎn)換器,包括10、2、8、16進(jìn)制之間共12種的相互轉(zhuǎn)換。輸入一個(gè)要轉(zhuǎn)換的數(shù)之后,按提示選擇所采用的轉(zhuǎn)換方式,輸出轉(zhuǎn)換的結(jié)果。
注:新上傳的文件是在此前代碼(下面的3. 原java代碼)的基礎(chǔ)上做了改進(jìn),能更好地實(shí)現(xiàn)封裝。
1. SystemConvert.java
package day8; import java.util.Scanner; public class SystemConvert { static Scanner scanner = new Scanner(System.in); static String s = ""; // 定義10進(jìn)制轉(zhuǎn)2進(jìn)制的方法。 public static String C10T2(int numb) { String result = ""; for (int i = numb; i > 0; i /= 2) result = i % 2 + result; return result; } // 定義10進(jìn)制轉(zhuǎn)8進(jìn)制的方法。 public static String C10T8(int numb) { String result = ""; for (int i = numb; i > 0; i /= 8) result = i % 8 + result; return result; } // 定義2進(jìn)制轉(zhuǎn)10進(jìn)制的方法。 public static int C2T10(int numb) { int k = 0, result = 0; // String result=null; for (int i = numb; i > 0; i /= 10) { result += (i % 10) * Math.pow(2, k); k++; } return result; } // 定義8進(jìn)制轉(zhuǎn)10進(jìn)制的方法。 public static int C8T10(int numb) { int k = 0, temp = 0; for (int i = numb; i > 0; i /= 10) { temp += (i % 10) * Math.pow(8, k); k++; } return temp; } public static void convert10(int numb, int to) { String s = ""; switch (to) { case 2: s = "" + C10T2(numb); break; case 8: s = "" + C10T8(numb); break; case 16: s = Integer.toHexString(numb).toUpperCase(); break; default: System.out.println("wrong input!"); } System.out.println(s); } public static void convert2(int numb, int to) { String s = ""; switch (to) { case 10: s = "" + C2T10(numb); break; case 8: s = "" + C10T8(C2T10(numb)); break; case 16: s = Integer.toHexString(C2T10(numb)).toUpperCase(); break; default: System.out.println("wrong input!"); } System.out.println(s); } public static void convert8(int numb, int to) { String s = ""; switch (to) { case 2: s = "" + C10T2(C8T10(numb)); break; case 10: s = "" + C8T10(numb); break; case 16: s = Integer.toHexString(C8T10(numb)).toUpperCase(); break; default: System.out.println("wrong input!"); } System.out.println(s); } public static void convert16(String numb, int to) { String s = ""; switch (to) { case 2: int temp2 = Integer.parseInt(numb, 16); s = C10T2(temp2); break; case 8: int temp3 = Integer.parseInt(numb, 16); s = C10T8(temp3); break; case 10: int temp = Integer.parseInt(numb, 16); s = "" + temp; break; default: System.out.println("wrong input!"); } System.out.println(s); } public static void convert(int numb, int from, int to) { switch (from) { case 10: convert10(numb, to); break; case 2: convert2(numb, to); break; case 8: convert8(numb, to); break; default: System.out.println("wrong input!"); } } public static void convert(String numb, int from, int to) { switch (from) { case 16: convert16(numb, to); break; default: System.out.println("wrong input!"); } } public static void main(String[] args) { System.out.println("要轉(zhuǎn)的是16進(jìn)制數(shù)嗎?\n輸入1。代表是;\n輸入2.代表不是.\n"); int input = scanner.nextInt(); switch (input) { case 1: System.out.println("請(qǐng)輸入一個(gè)16進(jìn)制數(shù):"); String numb = scanner.next(); System.out.println("轉(zhuǎn)成什么進(jìn)制的數(shù)?"); int to = scanner.nextInt(); convert(numb, 16, to); break; case 2: System.out.println("請(qǐng)輸入一個(gè)數(shù):"); int numb2 = scanner.nextInt(); System.out.println("從什么進(jìn)制數(shù)轉(zhuǎn)起?"); int from = scanner.nextInt(); System.out.println("轉(zhuǎn)成什么進(jìn)制的數(shù)?"); int to2 = scanner.nextInt(); convert(numb2, from, to2); break; default: System.out.println("wrong input!"); } } }
2. 運(yùn)行效果截圖:
3. 原java代碼
import java.util.Scanner; public class SystemConvert { static Scanner scanner = new Scanner(System.in); static String s = ""; public static void convert() { System.out.println("please input a number:"); String numb = scanner.next(); System.out.println("choose a way:\n輸入1,表示10進(jìn)制轉(zhuǎn)2進(jìn)制;\n" + "輸入2,表示2進(jìn)制轉(zhuǎn)10進(jìn)制;\n" + "輸入3,表示10進(jìn)制轉(zhuǎn)8進(jìn)制;\n" + "輸入4,表示8進(jìn)制轉(zhuǎn)10進(jìn)制;\n" + "輸入5,表示10進(jìn)制轉(zhuǎn)16進(jìn)制;\n" + "輸入6,表示16進(jìn)制轉(zhuǎn)10進(jìn)制;\n" + "輸入7,表示2進(jìn)制轉(zhuǎn)8進(jìn)制;\n" + "輸入8,表示2進(jìn)制轉(zhuǎn)16進(jìn)制;\n" + "輸入9,表示8進(jìn)制轉(zhuǎn)2進(jìn)制;\n" + "輸入10,表示8進(jìn)制轉(zhuǎn)16進(jìn)制;\n" + "輸入11,表示16進(jìn)制轉(zhuǎn)2進(jìn)制;\n" + "輸入12,表示16進(jìn)制轉(zhuǎn)8進(jìn)制;\n"); int input = scanner.nextInt(); switch (input) { case 1: // 10>>>2 s = "" + C10T2(numb); break; case 2: // 2>>>10 s += C2T10(numb); break; case 3: // 10>>>8 s = "" + C10T8(numb); break; case 4: // 8>>>10 s = "" + C8T10(numb); break; case 5: // 10>>>16 s = Integer.toHexString(Integer.valueOf(numb)).toUpperCase(); break; case 6:// 16>>>10 int temp = Integer.parseInt(numb, 16); s = "" + temp; break; case 7: // 2>>>8 s = "" + C10T8(Integer.toString(C2T10(numb))); break; case 8: // 2>>>16 s = Integer.toHexString(Integer.valueOf(C2T10(numb))).toUpperCase(); break; case 9: // 8>>>2 s = "" + C10T2(Integer.toString(C8T10(numb))); break; case 10:// 8>>>16 s = Integer.toHexString(Integer.valueOf(C8T10(numb))).toUpperCase(); break; case 11:// 16>>>2 int temp2 = Integer.parseInt(numb, 16); s = Integer.toBinaryString(temp2); break; case 12:// 16>>>8 int temp3 = Integer.parseInt(numb, 16); s = C10T8(Integer.toString(temp3)); break; default: System.out.println("Wrong input!"); } System.out.println(s); } public static int C2T10(String numb) { int k = 0, result = 0; // String result=null; for (int i = Integer.valueOf(numb); i > 0; i /= 10) { result += (i % 10) * Math.pow(2, k); k++; } return result; } public static int C8T10(String numb) { int k = 0, temp = 0; for (int i = Integer.valueOf(numb); i > 0; i /= 10) { temp += (i % 10) * Math.pow(8, k); k++; } return temp; } public static String C10T8(String numb) { String result = ""; for (int i = Integer.valueOf(numb); i > 0; i /= 8) result = i % 8 + result; return result; } public static String C10T2(String numb) { String result = ""; for (int i = Integer.valueOf(numb); i > 0; i /= 2) result = i % 2 + result; return result; } public static void main(String[] args) { SystemConvert.convert(); } }
4. 運(yùn)行截圖:
PS:這里再為大家推薦幾款本站的在線進(jìn)制轉(zhuǎn)換與計(jì)算工具,相信對(duì)于大家能有所幫助:
在線任意進(jìn)制轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/hexconvert
在線標(biāo)準(zhǔn)計(jì)算器:
http://tools.jb51.net/jisuanqi/jsq
在線科學(xué)計(jì)算器:
http://tools.jb51.net/jisuanqi/jsqkexue
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Java中靜態(tài)類型檢查是如何進(jìn)行的實(shí)例思路詳解
這篇文章主要介紹了Java中靜態(tài)類型檢查是如何進(jìn)行的實(shí)例思路詳解的相關(guān)資料,需要的朋友可以參考下2016-05-05Java關(guān)鍵字詳解之final static this super的用法
this用來調(diào)用目前類自身的成員變量,super多用來調(diào)用父類的成員,final多用來定義常量用的,static定義靜態(tài)變量方法用的,靜態(tài)變量方法只能被類本身調(diào)用,下文將詳細(xì)介紹,需要的朋友可以參考下2021-10-10關(guān)于spring.factories失效原因分析及解決
這篇文章主要介紹了關(guān)于spring.factories失效原因分析及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Spring?Boot整合持久層之JPA多數(shù)據(jù)源
JPA(Java Persistence API)Java 持久化 API,是 Java 持久化的標(biāo)準(zhǔn)規(guī)范,Hibernate 是持久化規(guī)范的技術(shù)實(shí)現(xiàn),而 Spring Data JPA 是在 Hibernate 基礎(chǔ)上封裝的一款框架2022-08-08Shiro安全框架的主要組件及認(rèn)證過程簡(jiǎn)介
這篇文章主要介紹了Shiro安全框架的主要組件及認(rèn)證過程簡(jiǎn)介,Shiro?是一個(gè)強(qiáng)大靈活的開源安全框架,可以完全處理身份驗(yàn)證、授權(quán)、加密和會(huì)話管理,本文就來介紹一下此框架的核心組成,需要的朋友可以參考下2023-08-08JAVA JDK8 List分組的實(shí)現(xiàn)和用法
今天小編就為大家分享一篇關(guān)于JAVA JDK8 List分組的實(shí)現(xiàn)和用法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)
本文主要介紹了SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2023-09-09feign 調(diào)用第三方服務(wù)中部分特殊符號(hào)未轉(zhuǎn)義問題
這篇文章主要介紹了feign 調(diào)用第三方服務(wù)中部分特殊符號(hào)未轉(zhuǎn)義問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03解決調(diào)用ftpClient.retrieveFileStream(String?remoteFilePath)第二次讀
這篇文章主要給大家介紹了關(guān)于如何解決調(diào)用ftpClient.retrieveFileStream(String?remoteFilePath)第二次讀取為空問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08