将字符串转换为整数val

时间:2018-06-05 09:11:17

标签: java

如果我的字符串包含100位数或900位数,我如何将其解析为整数值Java。

public static void main(String...args){
    long answer1=-1,answer2=-1;
    Scanner sc = new Scanner(System.in);
    int m = sc.nextInt();//length
    int s = sc.nextInt();//sum
    String startNmbr="1",endNmbr="9";
    int startRange=1,endRange=9;
    for(int i=1;i<m;i++){
        startNmbr+="0";endNmbr+="9";endRange+=9;
    }
    long end = Long.parseLong(endNmbr);
    for(long start=Long.parseLong(startNmbr);start<=end;start++){
        if(answer1==-1 && countNmbr(start)==s){
            answer1=start;
        }
        if(answer1!=-1 && countNmbr(start)==s){
            answer2=start;
        }
    }
    System.out.println(answer1+" "+answer2);
}
public static int countNmbr(long a){
    int answer=0;
    String str = a+"";
    for(int i=0;i<str.length();i++){
        answer+=(str.charAt(i)-'0');
    }
    return answer;
}

我的输入是100,100; 我必须返回其长度== m和sum == s;

的最小值和最大值

2 个答案:

答案 0 :(得分:1)

整数MAX_VALUE是2,147,483,647。这是10位数。

您可以使用BigInteger - No Limit,但这取决于您的内存和系统架构。

答案 1 :(得分:0)

您无法将900位数字解析为整数,因为从理论上讲,Integer的最小值为-2,147,483,648,最大值为2,147,483,647 (see java docs on Integer

Big Integer however将满足您的用例,因为理论上它的范围为-2 ^ Integer.MAX_VALUE(2,147,483,647)到+ 2 ^ Integer.MAX_VALUE(2,147,483,647)。

在您的代码中,您可以像这样解析字符串:

BigInteger end = new BigInteger(endNmbr);

并将所有长类型更改为BigInteger,您就可以了。