如果我的字符串包含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;
的最小值和最大值答案 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,您就可以了。