使用BufferReader的NumberFormatException

时间:2014-08-16 05:14:25

标签: java

如何处理NumberFormatException?每当我输入输入时,都不会发生错误,但是当我复制到控制台时,我曾经遇到异常。

这是我所指的那段代码:

package one;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


class A {
    public static void main(String args[] ) throws IOException, 
                                                   NumberFormatException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // int t=Integer.parseInt( br.readLine());

        String line = br.readLine().trim();
        int t = Integer.valueOf(line);
        int f[]=new int[t];


        for (int i = 0; i < t; i++) {
        f[i]=fib();
        }

        for(int i=0;i<t;i++)
        System.out.println(f[i]);
    }

    static int fib() throws IOException ,NumberFormatException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine().trim();

        int n=Integer.parseInt(br.readLine());
        //int n=Integer.valueOf(line);

        int a=1,b=2;int c;

        if(n==1) return a;
        if (n==2) return b;
        else {
            do {
                c=a+b;
                a=b;
                b=c;
                n--;
            } while(n>2);
        }
        return c%1000000007;
    } 
}

该程序试图找到Fibonacci系列的第n个术语。

1 个答案:

答案 0 :(得分:0)

看起来你正在跳过所有其他行,因为你在fib()中调用br.readLine()两次。

   String line = br.readLine().trim();
   int n=Integer.parseInt(br.readLine());

此外,您反复创建新的BufferedReaders,t + 1。由于它是一个BufferedReader,我认为行为没有明确定义。你反复阅读System.in的块 - 只注意第二行 - 然后忽略读者并在下一次迭代中创建一个新的。