###### tags: `Java` # Java自學紀錄 - 進位制轉換 ## 學習重點 * while迴圈 * 字串累加 * 字串反轉 * 進位置轉換 * 陣列 ### while 迴圈 ```java= while(運算式){ [敘述區塊]; } ``` ### 字串累加 ```java= String str; str=str + str.valueOf(資料型別); ``` ### 字串反轉 ```java= String str = "abcde"; Strirng reverse = new StringBuffer(str).reverse().toString(); System.out.println(reverse); //第一個reverse為新字串名稱 //將字串存入 StringBuffer()(字串緩衝區) //並反轉成字串 reverse().toString() 輸出結果為 : edcba ``` ### 進位制運用 ``` 若想把10進位制的數字轉n進位制(n<=9),就一直取除以n的餘數即可得其值 ``` >```example``` >```10進位```的10轉```2進位``` >10/2=5...0 >5/2=2....1 >2/2=1....0 >1/2=0....1 >所以```2進位制```的10為1010 ```java= import java.util.Scanner; public class Java進位制 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a,b; System.out.print("請輸入10進位制 : "); a = in.nextInt(); System.out.print("想轉換成幾進位制 : "); b = in.nextInt(); String str=""; while(a>0){ int r; r=a%b; str=str+String.valueOf(r); a=a/b; } String reverse = new StringBuffer(str).reverse().toString(); System.out.println("其"+b+"進位制為 : "+reverse); } } ``` >下圖為執行結果 ![](https://i.imgur.com/EpxBLcu.png) # 進位制轉換-加強版 >上面為2~9進位置的轉換,假如轉換的進位制超過10呢? >這時候可用陣列來存```餘數```的值 ```java= import java.util.Scanner; public class Java進位制進階 { public static void main(String[] args) { Scanner in = new Scanner(System.in); long a,b; System.out.print("請輸入10進位制 : "); a = in.nextLong(); System.out.print("想轉換成幾進位制 : "); b = in.nextLong(); String str=""; String s[]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; while(a>0){ long r; r=a%b; str=s[(int) r].concat(str); //亦等於 str=s[(int) r]+str; a=a/b; } System.out.println("其"+b+"進位制為 : "+str); } } ``` >下圖為執行結果 ![](https://i.imgur.com/xAtCGjD.png)