2017-02-08 29 views
1

Так что я застрял с этой проблемой в течение недели.Получение нуля после чтения столбца целочисленных значений из файла

Мне нужно получить значения из последнего столбца файла, который я читаю. Но когда я пытаюсь прочитать этот массив вне цикла while, я получаю нули вместо значений.

Но если я прочитал тот же массив внутри цикла while, я получу значения отлично.

BufferedReader br2 = new BufferedReader(new FileReader("/home/manofsteel/yeast_training.txt")); 
    // Starting to read a file line by line. 
     while((line = br2.readLine()) != null) 
     { 
     row = 0; 
     String[] valsNew = line.trim().split("\\s+"); /* Getting rid of all 
                 spaces since the file 
                 contains a lot of them. */ 

     cla = new int[lines]; 
     cla[row] = Integer.parseInt(valsNew[8]); /* 8 because i need the 
               values from last column. */ 


      row++; 

     } 
     for(int i=0;i<cla.length;i++) 
     { 
       // Trying to print back that array. 
       System.out.println("x"+cla[i]); 
     } 

} 

Выход я получаю

x0 
x0 
x0 
x0 

Выход я хочу

x4 
    x1 
    x1 
    x1 
    x2 
    x7 
    x2 
    x7 

Любые предложения приветствуются.

Если вы считаете, что мне нужно разделить входной файл. Дайте мне знать.

Спасибо.

+1

вы должны переместить строки 'CLA = новые ИНТ [строки];' выше while loop – maskacovnik

+3

На каждой итерации вы переписываете свой массив новым (содержащий только 0s): 'cla = new int [lines];'. – Berger

+1

И 'row = 0' выше while while – maskacovnik

ответ

2

Я не думаю, что это никогда не может работать, так как массив вы используете для хранения данных в всегда реинициализируется в каждой итерации:

cla = new int[lines]; 

А также, я не уверен, если вы всегда хотите установить строку к нулю каждый раз, когда вы выполнить новую итерацию (так как в конце вы делаете ряд ++;):

row = 0; 
+0

Спасибо, ребята, это сработало. :) –

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

  • Нет связанных вопросов^_^