2016-11-17 3 views
0

Я получаю исключение нулевого указателя в инструкции split. Я инициализировал переменную all_data1, которая при использовании split должна быть массивом. Просьба предложить то, что я делаю неправильно ... Это код для вашей ссылки ...Null pointer Исключение при использовании split

test_cases = t_inp.nextInt();  //input test cases 
    for(i=0;i<test_cases;i++) 
    { 
     String all_data = ""; 
     all_data = d_inp.readLine(); 
     all_data1 = all_data.split("\\s+"); 
     up_bnd[i] = Integer.parseInt(all_data1[i]); 
     lw_bnd[i] = Integer.parseInt(all_data1[i+1]); 
     Arrays.fill(all_data1, ""); 
     System.out.println(up_bnd); 
     System.out.println(lw_bnd); 

    }   
+1

Какова ценность 'all_data'? –

+0

Вы должны быть более конкретными в том, что происходит в 'all_data', вы можете получить исключение, потому что' .readLine() 'не получает никакого ввода, поэтому разделить его нечего. – px06

+0

Сначала инициализируйте all_data на «" (нулевой символ), затем используйте readLine() и split ... возможно, что строки d_inp не были прочитаны, а all_data становится нулевым и вызывает исключение – Sajad

ответ

3

Это зависит от того, что вы получаете от входного чтения.

Предполагаю, вы используете BufferedReader, который имеет readLine.

В Javadoc состояния:

/** 
    * Reads a line of text. A line is considered to be terminated by any one 
    * of a line feed ('\n'), a carriage return ('\r'), or a carriage return 
    * followed immediately by a linefeed. 
    * 
    * @return  A String containing the contents of the line, not including 
    *    any line-termination characters, or null if the end of the 
    *    stream has been reached 
    * 
    * @exception IOException If an I/O error occurs 
    * 
    * @see java.nio.file.Files#readAllLines 
    */ 
    public String readLine() throws IOException { 
     return readLine(false); 
    } 

Так что либо вы получите EOL характер или ваш поток достиг своей цели.

Если с вашего ввода введите новые строки, вы можете использовать readLine(boolean ignoreLF), который будет игнорировать символы EOL.

Смежные вопросы