Ошибка при передаче значения из arrayList в массив объектов - PullRequest
0 голосов
/ 06 февраля 2012
package mp1similar;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import EarthquakeRecord.Earthquakerecd;


public class MP1Similar 
{

private static ArrayList arrayList  ;

public static void main(String[] args) 
{
 ArrayList arrayList= null;
    try 
    {
    BufferedReader br = new BufferedReader(new FileReader("data/Catalog.txt"));

    String line="";
    arrayList =new ArrayList();
    while((line = br.readLine())!=null)
        {
      //  System.out.println(line);
        StringTokenizer st = new StringTokenizer(line);
        while(st.hasMoreTokens())
            {
          //System.out.println(st.nextToken());
            arrayList.add(st.nextToken());
            //System.out.println(br.readLine());
            }
        }
    }

    catch (FileNotFoundException ex)
    {
         System.out.println(ex.getMessage());
         ex.printStackTrace();
    }
catch (IOException ex)
    {
          System.out.println(ex.getMessage());
          ex.printStackTrace();
    }
          int j=0;
    Earthquakerecd E[]= new Earthquakerecd[2000];
     for(int i=0;i< arrayList.size();i++)
    {
        System.out.println(arrayList.get(i));
        E[j] = new Earthquakerecd();


       E[j].setDate(arrayList.get(i));



    if (j>35 )
    {
        j=0;
    } 
    j++;

    }



}

}

Я получаю сообщение об ошибке при передаче значений от arrayList до E[j]setDate.Это говорит, что метод в setDates не может быть применен к данным типам.aL объект Arraylist.Я отредактировал код, чтобы включить все.В основном это код для чтения данных из файла TXT.Есть 35 столбцов и более 1500 строк.Каждый столбец относится к определенному атрибуту, такому как дата, имя и т. Д.

1 Ответ

2 голосов
/ 06 февраля 2012

Вы пытаетесь использовать оператор присваивания в результате вызова метода здесь:

E[j].setDate()=(aL.get(i));

Я подозреваю, что вы хотели:

E[j].setDate(aL.get(i));

Однако, тогда произойдет сбойс NullPointerException, потому что вы никогда не инициализируете E[j] - это всегда будет нулевой ссылкой.Я подозреваю, что вы хотите:

E[j] = new Earthquakerec();

в цикле где-то.Вы также, вероятно, захотите увеличить j в какой-то момент ... (Непонятно, для чего здесь различные магические числа - я подозреваю, что вы могли бы написать весь код намного яснее, но трудно предложить улучшения, когдамы не знаем, чего он хочет достичь.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...