当前位置: 代码迷 >> Eclipse >> Exception in thread "main" java.lang.NumberFormatException: For input string:该如何解决
  详细解决方案

Exception in thread "main" java.lang.NumberFormatException: For input string:该如何解决

热度:46   发布时间:2016-04-23 02:04:51.0
Exception in thread "main" java.lang.NumberFormatException: For input string:
题目描述
Description 阶乘是数学中的一种运算,n的阶乘表示为:n!=1*2*3*...*n。
编写程序,根据一个给出的n, 求得其阶乘值中所有数字之和P。并判断P是否为素数。
Input   键盘输入一个自然数n (1≤ n ≤ 100 )。
Output n的阶乘值的所有数字之和P,若P为素数输出“T”,否则输出“F”。
Sample Input 
样例1: 5
样例2: 20
Sample Output 
样例1: 3□T
样例2: 54□F
Hint □表示空格
输入
Input   键盘输入一个自然数n (1≤ n ≤ 100 )。
输出
Output n的阶乘值的所有数字之和P,若P为素数输出“T”,否则输出“F”。
样例输入
20
样例输出
54 F

代码:
为什么输20会报错,5的话就可以
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner rd=new Scanner(System.in);
Integer n=rd.nextInt();
String str=jiecheng(n).toString();
int array[]=new int[str.length()];
int sum=0;
for(int i=0;i<str.length();i++)
{
Character a=str.charAt(i);
array[i]=Integer.parseInt(a.toString());
}
for(int i=0;i<array.length;i++)
{
sum+=array[i];
}
if(sushu(sum)==true)
{
System.out.print(sum+" "+"T");
}
else
{
System.out.print(sum+" "+"F");
}
}
public static Integer jiecheng(int n)
{
int sum=1;
for(int i=1;i<=n;i++)
{
sum*=i;
}
return sum;
}
public static boolean sushu(int n)
{
if(n==1||n==0)
{
return false;
}
for(int i=2;i<=n/2;i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}


------最佳解决方案--------------------
20! = 2432902008176640000
int 型放不下。(int sum)

------其他解决方案--------------------
引用:
20! = 2432902008176640000
int 型放不下。(int sum)

应该怎么改?
  相关解决方案