如何使用BufferedReader在java中获取多行输入?

时间:2018-02-24 18:17:30

标签: java nullpointerexception bufferedreader inputstreamreader

例如,我的输入是
2 //这是变量T
5 2 5 //这些是3个空格分离的参数
1 2 4 5 5 //这是我的阵列
2 3 4 //这些是我的第二组参数
2 9 //和我的第二组数组

    package hills;

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


    public class hillJump {

只是与我的程序相关的功能

static void fun(int N, int U, int D, int a[]){
    int jump=0,i,para = 1;
    for(i=0;i<4;i++){
        if((a[i+1]-a[i])==0 || ((a[i+1]-a[i])<=U && (a[i+1]-a[i])>0) || (a[i+1]-a[i])>=D &&(a[i+1]-a[i])<0 ){
            jump++;
        }
        else if(-1*(a[i+1]-a[i])>D && para==1){
            para = 0;
            jump++;
        }
        else{
            break;
        }
    }
    System.out.println(jump);
}
public static void main(String[] args)throws Exception {
    // TODO Auto-generated method stub

我试图按以下方式阅读输入,

    InputStreamReader r = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(r);

    int T = Integer.parseInt(br.readLine());
    int arr[][] = new int[T][];
    int p[][] = new int[T][]; // N U D 
    String s,hills;
    String str[][] = new String[T][];
    String str2[][] = new String[T][];

    //reading from keyboard

        for(int i=0;i<T;i++){
            s = br.readLine();
            str[i] = s.trim().split("\\s+");
            hills = br.readLine();
            str2[i] = hills.trim().split("\\s+");
        }

取得输入后显示
**********

Exception in thread "main" java.lang.NullPointerException
at hills.hillJump.main(hillJump.java:50)

**********

    //arranging data

    for(int i=0;i<T;i++){
        for(int j = 0;j<3;i++){
            p[i][j] = Integer.parseInt(str[i][j]); // LINE 50 with error
        }
        for(int j=0;j<str2.length;j++){
            arr[i][j] = Integer.parseInt(str2[i][j]);
        }
    }
    //output
    for(int i=0;i<T;i++){
        fun(p[i][0], p[i][1], p[i][2], arr[i]);
    }

}

}

我被困住了,不知道该怎么办?

我已经完成了以下答案

What is a NullPointerException, and how do I fix it?

仍然,我无法弄清问题是什么。 我使用bufferedReader从同一行获取输入,我怀疑错误是否是由readLine()函数引起的。

0 个答案:

没有答案