как добавить данные в ARRAYLIST - PullRequest
1 голос
/ 01 января 2011
try {
    final List<String> ar = new ArrayList<String>();
    final PRIvariable pri = new PRIvariable();

    final BufferedReader reader = new BufferedReader(
        new InputStreamReader(new FileInputStream("C:/cdr2.csv")));

    while (reader.ready()) {
        final String line = reader.readLine();
        final String[] values = line.split(",");
        pri.dateText = values[2] + "    " + values[4];
        pri.count = pri.count + 1;
        pri.sum = pri.sum + Integer.parseInt(values[7]);
        System.out.println(pri.dateText + "  " + pri.sum + " " + pri.count);
        ar.add(pri);
    }

    final String[] columnNames = { "Date", "TOTAL", "COUNTS" };
    final String[][] cells = new String[ar.size()][3];
    for (int i = 0; i < ar.size(); i++) {
        cells[i][0] = ((PRIvariable) ar.get(i)).dateText;
        cells[i][1] = "" + ((PRIvariable) ar.get(i)).sum;
        cells[i][2] = "" + ((PRIvariable) ar.get(i)).count;
    }
    table = new JTable(cells, columnNames);
    table.setSize(400, 400);
    table.setVisible(true);
    final JScrollPane js = new JScrollPane();
    js.setViewportView(table);
    js.setSize(400, 400);
    js.setVisible(true);
    add(js, java.awt.BorderLayout.CENTER);

} catch (final Exception e) {
    System.out.println(e);
}

Это мой код.Здесь я хочу прочитать текстовый файл и поместить эти данные в Jtable.Но в этом коде он показывает каждую строку Jtable, заполненную теми же данными, которые содержатся в последнем ряду arraylist (ar).(я думаю, что есть проблема в моем arraylist).Как я могу решить это ......

1 Ответ

2 голосов
/ 01 января 2011

Проблема с переменной pri. Он должен быть создан внутри цикла while.

Как это

String line = null;
while ((line = reader.readLine()) != null) {
    PRIvariable pri = new PRIvariable();
    String[] values = line.split(",");
    pri.dateText = values[2] + "    " + values[4];
    pri.count = pri.count + 1;
    pri.sum = pri.sum + Integer.parseInt(values[7]);
    System.out.println(pri.dateText + "  " + pri.sum + " " + pri.count);
    ar.add(pri);
}

В вашем коде вы хотите создать отдельный экземпляр PRIvariable для каждой строки в файле, но вы создаете только один раз экземпляр PRIvariable в начале, тогда вы всегда используете этот экземпляр, переопределяя предыдущее значение .

...