Есть класс PrivateSectorPersons с методом ViewPerson:| Код | public static void ViewPerson(PrivateSectorPersons pers) { System.out.println(pers.surname+" "+pers.name+" "+pers.secondname); } // ViewPerson
|
Есть Main класс
| Код | public class Main { public static PrivateSectorPersons parseRow(Cell[] row) { // Промежуточные переменные: // Проголосовавший: // код ЛС, флаг ответственности, ФИО, дата рождения, пол int ls_code; boolean otv; String name, surname, secondname; java.util.Date birthday; char sex; // др. переменные... // Собственно парсим строку, записывая значения ячеек в промежуточные переменные: // Проголосовавший: // код ЛС if (row[1].getType() == CellType.NUMBER) { NumberCell cell = (NumberCell) row[1]; ls_code = (int)cell.getValue(); } else return null; // флаг ответственности if (row[2].getType() == CellType.BOOLEAN) { BooleanCell cell = (BooleanCell) row[2]; otv = cell.getValue(); } else return null; // фамилия if (row[3].getType() == CellType.LABEL) { LabelCell cell = (LabelCell) row[3]; name = cell.getString(); } else return null; // имя if (row[4].getType() == CellType.LABEL) { LabelCell cell = (LabelCell) row[4]; surname = cell.getString(); } else return null; // отчество if (row[5].getType() == CellType.LABEL) { LabelCell cell = (LabelCell) row[5]; secondname = cell.getString(); } else return null; // дата рождения if (row[6].getType() == CellType.DATE) { DateCell cell = (DateCell) row[6]; birthday = cell.getDate(); } else return null; // пол if (row[14].getType() == CellType.LABEL) { LabelCell cell = (LabelCell) row[14]; sex = (cell.getString().toCharArray())[0]; } else return null; // остальное... // Вызываем конструктор, создающий объект return new exceltest.PrivateSectorPersons(ls_code, otv, surname, name, secondname, birthday, sex, district, sattlement, street, home, flat, country, region, district_, sattlement_, doc_type, series, number, issue_place, issued, issue_date); } // parseRow /** * @param args the command line arguments */ public static void main(String[] args) { try { // Открываем Excel-книгу для работы: Workbook workbook = Workbook.getWorkbook(new File("e:\\Projects\\JDBC, Excel\\test.xls")); int SheetsNumber = workbook.getNumberOfSheets(); System.out.println("Sheets Count: " + SheetsNumber); // Ссылка на лист Sheet sheet; // Количество столбцов и строк в листе int columns, rows; // Список персон из частного сектора List persons = new ArrayList(); // Открываем лист и // считываем количество стобцов и строк в нем sheet = workbook.getSheet(0); columns = sheet.getColumns(); rows = sheet.getRows(); // Выводим информацию System.out.println("Sheet Number: "+ 0); System.out.println("Columns: " + columns + " Rows: " + rows); // Ячейки строки Cell[] row; // Персона из частного сектора PrivateSectorPersons pers; // Считываем ячейки в массив for(int k=0; k<rows; k++) { row = sheet.getRow(k); persons.add(parseRow(row)); } // Просмотр коллекции с помощью итератора Iterator i = persons.iterator(); while(i.hasNext()) { pers = (PrivateSectorPersons)i.next(); PrivateSectorPersons.ViewPerson(pers); } // Просмотр коллекции //for(int i=0; i<persons.size(); i++) //{ // PrivateSectorPersons.ViewPerson((PrivateSectorPersons) persons.get(0)); //} // Закрываем Excel-книгу workbook.close(); } catch (IOException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } catch (BiffException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } System.out.println("The End."); } // main method } // Main class
|
не удается просмотреть данные ни с помощью for ни с помощью Iterator((
| Код | // Просмотр коллекции с помощью итератора Iterator i = persons.iterator(); while(i.hasNext()) { pers = (PrivateSectorPersons)i.next(); PrivateSectorPersons.ViewPerson(pers); } // Просмотр коллекции //for(int i=0; i<persons.size(); i++) //{ // PrivateSectorPersons.ViewPerson((PrivateSectorPersons) persons.get(0)); //}
|
Компилятор выплевывает следующее:
| Цитата |
run: Sheets Count: 13 Sheet Number: 0 Columns: 35 Rows: 1500 Exception in thread "main" java.lang.NullPointerException at exceltest.PrivateSectorPersons.ViewPerson(PrivateSectorPersons.java:81) at exceltest.Main.main(Main.java:277) Java Result: 1 BUILD SUCCESSFUL (total time: 1 second)
|
81 строка в первом листинге: System.out.println(pers.surname+" "+pers.name+" "+pers.secondname);
277 вызов ViewPerson PrivateSectorPersons.ViewPerson(pers);
Подскажите как сделать правильно? |