这道题为什么我的代码评测出现错误输入输出啊?可以帮我找找有啥潜在的问题么?谢谢了。
import java.util.Scanner;
public class Main {
public static void from16to10(String str){
int num = 0;
int j=0;
for(int i=str.length()-1;i>=0;i--){
if(str.charAt(i)<'A'){
num +=((str.charAt(i)-'0')*Math.pow(16, j));
}
else{
num+=((str.charAt(i)-'A'+10)*Math.pow(16, j));
}
j++;
}
System.out.println(num);
}
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
from16to10(str);
}
看了下,错误是要求不超过8位,所以需要用uint。超过7ffffff,结果都是2147483647
System.out.println(Integer.MAX_VALUE);
System.out.println(Long.MAX_VALUE);
###########################
2147483647(7FFF,FFFF)
9223372036854775807(7FFF,FFFF,FFFF,FFFF)
所以num改成Long型就好