方法一:当输入的十六进制数字符串比较大时,就会发生异常
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String string=scanner.next();
int i=Integer.parseInt(string,16);
System.out.println(i);
scanner.close();
}
}
方法二:在蓝桥杯练习系统上只有75分,不知道为啥
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String string=scanner.next();
int length=string.length();
if(length>0&&length<=8) {
char[] arr=new char[8];
int[] arr1=new int[8];
for(int i=8-length,k=0;i<=7 && k<length;i++,k++) {
arr[i]=string.charAt(k);
switch(arr[i]){
case '0':
arr1[i]=0;
break;
case '1':
arr1[i]=1;
break;
case '2':
arr1[i]=2;
break;
case '3':
arr1[i]=3;
break;
case '4':
arr1[i]=4;
break;
case '5':
arr1[i]=5;
break;
case '6':
arr1[i]=6;
break;
case '7':
arr1[i]=7;
break;
case '8':
arr1[i]=8;
break;
case '9':
arr1[i]=9;
break;
case 'A':
arr1[i]=(int)arr[i];
arr1[i]=10;
break;
case 'B':
arr1[i]=(int)arr[i];
arr1[i]=11;
break;
case 'C':
arr1[i]=(int)arr[i];
arr1[i]=12;
break;
case 'D':
arr1[i]=(int)arr[i];
arr1[i]=13;
break;
case 'E':
arr1[i]=(int)arr[i];
arr1[i]=14;
break;
case 'F':
arr1[i]=(int)arr[i];
arr1[i]=15;
break;
}
}
double num=0,num1;
for(int j=8-length;j<=7;j++) {
num1=Math.pow(16,(7-j))*arr1[j];
num=num+num1;
}
int num2=(int)num;
System.out.println(num2);
scanner.close();
}
}
}