解题思路:先将16进制的数据转成10进制,再转化为8进制
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cs = new Scanner(System.in);
int n = cs.nextInt();
String[] sss = new String[n];
for (int i = 0; i < n; i++) {
sss[i] = cs.next();
}
for (int i = 0 ; i < n ;i++){
System.out.println(Octal(Decimal(sss[i])));
}
}
public static int Decimal(String sss){ //将十六进制转换为十进制
int sum = 0;
for (int i = 0 ; i < sss.length();i++){
char s = sss.charAt(i);
int v = s;
if (v>=48 && v<=57){
v = v-48;
}
if (v>=65&&v<=70){
v = v-55;
}
sum += v*Math.pow(16,sss.length()-1-i);
}
return sum;
}
public static int Octal(int s){ //再将十进制转化为八进制
int sum = 0;
for (int i=s,j=0 ; i!=0 ; i = i/8,j++){
sum += (i%8)*Math.pow(10,j);
}
return sum;
}
}