Exception in thread "main" java.lang.NumberFormatException: For input string: -

eviljordan 2012-11-20 11:21:19
题目描述
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;
}

...全文
465 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
eviljordan 2012-11-21
  • 打赏
  • 举报
回复
引用 1 楼 anruike 的回复:
20! = 2432902008176640000 int 型放不下。(int sum)
应该怎么改?
anruike 2012-11-21
  • 打赏
  • 举报
回复
20! = 2432902008176640000 int 型放不下。(int sum)

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧