###### 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);
}
}
```
>下圖為執行結果

# 進位制轉換-加強版
>上面為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);
}
}
```
>下圖為執行結果
