改用switch-case后,代码如下:
package com.java;
import java.util.Scanner;
public class TestTransform {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(;;){
System.out.println(“请输入小于2的31次方的正整数:(輸入0結束程序)”);
int i = sc.nextInt();
if(i==0){
System.out.println(“程序结束!”);
break;
}else{
int num = 0;
if(i>=Math.pow(2, 0) && i
num = 1;
}else if(i>=Math.pow(2, 4) && i
num = 2;
}else if(i>=Math.pow(2, 8) && i
num = 3;
}else if(i>=Math.pow(2, 12) && i
num = 4;
}else if(i>=Math.pow(2, 16) && i
num = 5;
}else if(i>=Math.pow(2, 20) && i
num = 6;
}else if(i>=Math.pow(2, 24) && i
num = 7;
}else if(i>=Math.pow(2, 28) && i
num = 8;
}
switch(num){
case 8:
int i8 = i>>28 & 15;
String s8 = i8<=9 ? i8+”” : (char)(i8-10+’a’)+””;
System.out.print(s8);
case 7:
int i7 = i>>24 & 15;
String s7 = i7<=9 ? i7+”” : (char)(i7-10+’a’)+””;
System.out.print(s7);
case 6:
int i6 = i>>20 & 15;
String s6 = i6<=9 ? i6+”” : (char)(i6-10+’a’)+””;
System.out.print(s6);
case 5:
int i5 = i>>16 & 15;
String s5 = i5<=9 ? i5+”” : (char)(i5-10+’a’)+””;
System.out.print(s5);
case 4:
int i4 = i>>12 & 15;
String s4 = i4<=9 ? i4+”” : (char)(i4-10+’a’)+””;
System.out.print(s4);
case 3:
int i3 = i>>8 & 15;
String s3 = i3<=9 ? i3+”” : (char)(i3-10+’a’)+””;
System.out.print(s3);
case 2:
int i2 = i>>4 & 15;
String s2 = i2<=9 ? i2+”” : (char)(i2-10+’a’)+””;
System.out.print(s2);
case 1:
int i1 = i & 15;
String s1 = i1<=9 ? i1+”” : (char)(i1-10+’a’)+””;
System.out.println(s1);
}
}
}
}
}
自己写的,欢迎各位友友交流挑错,赐教调优方法!