作业指导,进制转换问题具体如代码所示,将十进制转换为二进制,八进制,十六进制均有库函数提供方法,也可以自己写出,下面代码设计了两种方法!
public class jinzhizhuanhuankuhanshu {
public static String tenNumToSixteenNum(int tenNum) {
String modStr = "";
do {
int mod = tenNum %16;
switch (mod) {
case 10:
modStr += "A";
break;
case 11:
modStr += "B";
break;
case 12:
modStr += "C";
break;
case 13:
modStr += "D";
break;
case 14:
modStr += "E";
break;
case 15:
modStr += "F";
break;
default:
modStr += mod;
break;
}
tenNum = tenNum /16;
} while (tenNum > 0);
char[] modchars = modStr.toCharArray();
String result = "";
for (int i = modchars.length-1; i>= 0;i--) {
result += modchars[i];
}
return result;
}
public static void main(String[] arg){
int tenNum = 225;
String sixteenStr = tenNumToSixteenNum(tenNum);
System.out.println("将十进制数【"+tenNum+"】转换为16进制数【"+tenNumToSixteenNum(tenNum)+"】");
System.out.println("将十进制数【"+tenNum+"】转换为16进制数【"+Integer.toHexString(tenNum)+"】");
tenNum = sixteenNumToTenNum(sixteenStr);
System.out.println("将16进制数【"+sixteenStr+"】转换为10进制数【"+tenNum+"】");
}
public static int sixteenNumToTenNum(String sixteenStr) {
char[] sixteenArraty = sixteenStr.toCharArray();
int result = 0;
for (int i = 0; i < sixteenArraty.length; i++) {
int num;
switch (sixteenArraty[i]) {
case 'A':
num = 10;
break;
case 'B':
num = 11;
break;
case 'C':
num = 12;
break;
case 'D':
num = 13;
break;
case 'E':
num = 14;
break;
case 'F':
num = 15;
break;
default:
num = Integer.parseInt(""+sixteenArraty[i]);
break;
}
result +=num * Math.pow(16, sixteenArraty.length-1-i);
}
return result;
}
}
需注意在写switch-case语句时break的使用,万万不可写错地方或者说不能不写!