OpenCSV & Java: Методът пропуска ред всеки път, когато се стартира?

Какво се опитвам да направя: Използвайки OpenCSV, напишете метод, който ще ми позволи да получа информация от определена колона в CSV. Този CSV (на практика) ще има само два реда: заглавен ред и един ред с информация. Трябва да взема определени битове и да ги манипулирам, за да ги поставя в друг CSV (но не съм стигнал дотам).

Проблемът: Всеки път, когато извикам този метод, той се премества с един ред надолу. Пример: Търся ID на продукта и той връща ID на продукта на ред 2, което е добре. След това го стартирам отново и търся описанието и то връща описанието на ред 3. Не е добре. Стартирайте го отново и той намира правилната колона на ред 4. Отново не е добре. Винаги ще трябва да гледам само ред 2. Имам чувството, че отговорът е много прост, но не го виждам.

public class Application {

    public static String ItemNabber(String item, CSVReader reader, String [] headerLine) throws IOException {
        String passedItem = null;

        try {

                for (int i = 0; i < headerLine.length; i++){
                    if (headerLine[i].equals(item)) //customize name
                    {
                        String [] itemFound = reader.readNext();
                        System.out.println(itemFound[i]);
                        passedItem = itemFound[i];
                        itemFound = null;



                    }

        }

            } 
        catch (FileNotFoundException e) 
            {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }
            return passedItem;
    }

    public static void main(String[] args) throws IOException {
        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter myFilter = new FileNameExtensionFilter("Text Files", "txt", "csv");
        chooser.setFileFilter(myFilter);
        int returnVal = chooser.showOpenDialog(null);
            if(returnVal == JFileChooser.APPROVE_OPTION) 
            {
           System.out.println("You chose to open this file: " +
                chooser.getSelectedFile().getAbsolutePath());
            }
            String filePath = String.format(chooser.getSelectedFile().getAbsolutePath());

            CSVReader reader = new CSVReader(new FileReader(filePath), '|');

            String [] headerLine = reader.readNext(); 
            ItemNabber("PRODID", reader, headerLine);
            ItemNabber("DESCR", reader, headerLine);

В този пример той намира правилния PRODID, но се плъзга надолу по ред, за да намери описанието.

Благодаря предварително!


person Vladimir Marenus    schedule 14.03.2014    source източник


Отговори (1)


Извиквате reader.readNext във функцията.

Низ [] itemFound = reader.readNext();

Просто прочетете реда, който искате, като го предадете като низов аргумент:

Низ [] headerLine = reader.readNext(); Низ [] dataLine = reader.readNext();

ItemNabber("PRODID", dataLine, headerLine); ItemNabber("DESCR", dataLine, headerLine);

person Brad    schedule 14.03.2014
comment
-ЗНАЕХ - беше нещо просто! Благодаря ви, сигурно съм се замислил... Ще приема отговора веднага щом мога. - person Vladimir Marenus; 15.03.2014