这是显示系列1-(a ^ 2/3!)+(a ^ 4/5!)的总和的程序 - (a ^ 6/7!)+ ..... 我用递归显示阶乘数
import java.io.*;
class Series{
public static void main(String args[])throws IOException{
int n,a;
double sum=0;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.println("Enter the value of n & a");
str=br.readLine();
n=Integer.parseInt(str);
str=br.readLine();
a=Integer.parseInt(str);
for(int i=0;i<=n;i++){
sum=sum+(Math.pow(-1,i)*(Math.pow(a,2*i)/fact(2*i+1)));
}
System.out.println(sum);
}
static int fact(int n){
int fact=1,i;
for(i=1;i<=n;i++){
fact=fact*i;
}
return(fact);
}
}
输出=
Exception in thread "main" java.lang.NumberFormatException: For input string: "3 6"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at Series.main(Series.java:12)
请帮助我,它在java编程中显示错误在线程&#34; main&#34; java.lang.NumberFormatException
答案 0 :(得分:2)
Integer.parseInt(str);
这是错误的行,因为str =&#34; 3 6&#34;(在你的情况下)并且它不能被转换为整数。
答案 1 :(得分:2)
“3 6”包含一个空格,因此java无法将其转换为数字。这就是你得到那个错误的原因。 您可以用“”替换所有空格,然后尝试将其转换为数字
String line = br.readLine().replaceAll("\\s+", "");
//if you only have spaces in either of side. then you can use trim()
int number = Integer.parseInt(line);
但最好的方法是用“”
替换所有非数字字符String line = br.readLine().replaceAll("\\D+", "");
int no = Integer.parseInt(line);
答案 2 :(得分:1)
试试这个: -
Scanner sc = new Scanner(System.in);
System.out.println("Enter the value of n & a");
n = sc.nextInt();
a = sc.nextInt();
答案 3 :(得分:0)
readLine()
会读取字符,直到找到换行符。
在您的情况下,请尝试在换行符中输入n
和a
的值
或使用扫描仪
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
a = scanner.nextInt();