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();

}

}

}

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值