2 cning 123 cning_123 于 2016.03.11 22:46 提问

蓝桥杯 java基础试题关于进制转换的

图片说明
这道题为什么我的代码评测出现错误输入输出啊?可以帮我找找有啥潜在的问题么?谢谢了。
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);
}

}这是评测结果显示有一个错误的例子。图片说明

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.12 02:49

看了下,错误是要求不超过8位,所以需要用uint。超过7ffffff,结果都是2147483647

Huakelilinjie
Huakelilinjie   2016.03.12 10:04
    System.out.println(Integer.MAX_VALUE);
    System.out.println(Long.MAX_VALUE);

    ###########################
    2147483647(7FFF,FFFF)
    9223372036854775807(7FFF,FFFF,FFFF,FFFF)

所以num改成Long型就好

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!