这其实是一道滴滴的校招题,但是感觉还是挺有用的,很多十进制数在某种特定的场合需要被转换为其他任意进制数,比如常见的二进制、八进制、十六进制,也可能会有比较罕见的,比如自定义的三进制数等
其实网上有很多种实现方式,我的我不是代码量最少的,可能也不是最全面的,但我相信,我的应该是最通俗易懂的。
话不多说,接下来放上我的代码:
package demo;
import java.util.Scanner;
public class Demo10 {
public void transform(int num,int n){
//参数num为输入的十进制数,参数n为要转换的进制
int array[]=new int[100];
int count=0;
int location=0;
while(num!=0){//当输入的数不为0时循环执行求余和赋值
int remainder=num%n;
num=num/n;
array[location]=remainder;//将结果加入到数组中去
location++;
count++;
}
show(array,location-1,count);
}
private void show(int[] arr,int n,int count){
for(int i=n;i>=0;i--){
if(arr[i]<0) {
for(int j=0;j<count-1;j++) {
arr[j]=Math.abs(arr[j]);
}
}
if(arr[i]>9||arr[i]<-9){
System.out.print((char)(arr[i]+55));
}
else
System.out.print(arr[i]+"");
}
}
public static void main(String[] args)
{
// 测试用例
Demo10 t=new Demo10();
Scanner sc=new Scanner(System.in);
String[] str=sc.nextLine().split(" ");
int[] a=new int[str.length];
for(int i=0;i<str.length;i++) {
a[i]=Integer.parseInt(str[i]);
}
t.transform(a[0], a[1]);
}
}
相信这段代码还是很多人都能看得懂的,如果有什么不懂的可以评论区里问我。如果有测试用例失败的,也请麻烦评论区里告诉我,我看看能不能完善一下我的代码,使它的功能更加全面。