java学习——98.十进制转换为其它进制
本篇介绍如何将十进制转换为二进制、八进制或十六进制。
十进制转换为二进制的方法是“除2取余法”,其他进制也可依此类推。
本例是通过main方法输入一个整数,并根据main中的语句将之转换为其他进制的数。
其完整代码如下:
import java.util.*;
public class Jinzhizhuanhuan {
public static String parseInto(int value,int radix) {//转换进制的方法,其中value是整数,radix是要转化的进制
if(radix==10)//因为输入的即为十进制数,所以不需要转换,直接输出即可。
return value+"的十进制数是"+value;
else if(radix==2||radix==8||radix==16) {//如果是其他进制,都是用除radix取余法
int n=value;//用n来存储value的值,目的是为了后面的转换
String s="";//用字符串来存储转换之后的进制值
while(n>0) {//当n>0时,执行此循环
if((n%radix)>=10) {//因为采用“除radix取余法”,二进制和八进制数可直接用其余数,而十六进制不可以,本if语句主要是10~15转换为a~f这六个十六进制中的符号
switch(n%radix) {
case 10:s+='a';break;
case 11:s+='b';break;
case 12:s+='c';break;
case 13:s+='d';break;
case 14:s+='e';break;
case 15:s+='f';break;
}
n=n/radix;
}
else {//二进制或者八进制可直接取余,但用此方法取出来的字符均是顺序放在字符串s中的
s+=n%radix;
n=n/radix;
}
}
String s1="";
for(int i=s.length()-1;i>=0;i--)//将s中的字符倒换顺序,得到正确的“除radix取余法”的解
s1+=s.charAt(i);
return value+"的"+radix+"进制数是"+s1;//将结果输出
}
else
return value+"不能转换为"+radix+"进制";//本例只输出二进制、八进制或者十六进制,计算机当中一般也不用其他进制,如果radix的值为其他,则会提示输出错误
}
public static void main(String args[]) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个数:");
int n=scan.nextInt();
System.out.println(parseInto(n,10));
System.out.println(parseInto(n,2));
System.out.println(parseInto(n,8));
System.out.println(parseInto(n,16));
scan.close();
}
}
其运行结果如下:
