java编程中的错误线程中的异常" main" java.lang.NumberFormatException

时间:2014-08-17 14:14:35

标签: java

这是显示系列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

4 个答案:

答案 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()会读取字符,直到找到换行符。

在您的情况下,请尝试在换行符中输入na的值

或使用扫描仪

Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
a = scanner.nextInt();