Java124 0,AcWing 124. 数的进制转换java
package acwing寒假每日一題;
import java.io.BufferedInputStream;
import java.util.*;
public class TransNumber {
public static void main(String[] args) {
Scanner in = new Scanner(new BufferedInputStream(System.in));
//n次操作
int n = in.nextInt();
//輸入字符串,輸出字符串,a,b進制
String a_line="",b_line="";
int a,b;
List number = new ArrayList<>();
while(n--!=0){
a = in.nextInt();
b = in.nextInt();
a_line = in.next();
//強轉成char[],foreach時可以忽略最后一個字符
for(char c: a_line.toCharArray()){
if(c>='0'&&c<='9') number.add(c-'0');
else if(c>='A'&&c<='Z') number.add(c-'A'+10);
else number.add(c-'a'+36);
}
//使用Collections的reverse翻轉一個list,a[0]表示各位,a[n-1]表示高位
Collections.reverse(number);
//開始短除法
//存放余數
List res = new ArrayList<>();
while (number.size()!=0){
int r = 0;
for(int i = number.size()-1;i>=0;i--){
//更新當前被除數
number.set(i,(int)(number.get(i))+r*a);
//更新當前余數
r = number.get(i)%b;
//更新當前商,直接更新在number[i]上
number.set(i, number.get(i)/b);
}
//把余數存起來
res.add(r);
//去除前導0
while(number.size()!=0&&number.get(number.size()-1)==0) number.remove(number.size()-1);
}
Collections.reverse(res);
//每次把b_line賦值為空
b_line="";
for(int i:res){
//這里要加強轉符號,在這里折騰好久,復習基本數據類型轉換可知,char,byte,short在運算時先變成int,然后計算
//所以這里不加向下強轉的話返回的就是它的ascii碼值
//char到int型可以自動轉換
//(char,byte,short)-int-long-float-double,boolean不能強轉,也不能等效替代為數字
//基本數據類型可以直接用==,而char,Integer,String不能直接用==表示數值相等
//詳情參考java筆記
if (i>=0&&i<=9) b_line+=(char)(i+'0');
else if(i>=10&&i<=35) b_line+=(char)(i-10+'A');
else b_line+=(char)(i-36+'a');
}
System.out.println(a+" "+a_line);
System.out.println(b+" "+b_line);
System.out.println();
}
}
}
```
總結
以上是生活随笔為你收集整理的Java124 0,AcWing 124. 数的进制转换java的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海马先生绘本教案一等奖
- 下一篇: php7 php5.6 array,[转