从txt文件创建对象时出现NoSuchElementException

时间:2014-04-11 15:07:38

标签: java file io

我有txt文件,看起来像这样,我想将其转换为对象,然后用它填充sqlite db。当我试图解析数据时,出现了奇怪的错误。

[Dokument]  
DataWyst=14.01.15
SymbolKontrahenta=KUMA
[ZawartoscDokumentu]
[Poz1]
Nazwa=MML
Symbol=5902317000160   
CenaNetto=169
SymbolDostawcy=    69    659
[Poz2]
Nazwa=ŚMT
Symbol=5902317100433
CenaNetto=1430
SymbolDostawcy=    54    568
[Poz3]
Nazwa=tka
Symbol=1204
CenaNetto=1008
SymbolDostawcy=     7     78


[Dokument]
DataWyst=14.01.15
SymbolKontrahenta=EA
[ZawartoscDokumentu]
[Poz1]
Nazwa=dag
Symbol=5900643030141
CenaNetto=358
SymbolDostawcy=
[Poz2]
Nazwa=DANS
Symbol=59026990
CenaNetto=234
SymbolDostawcy=     4     18

我试图以这种方式将此文本解析为对象:

int i_liczba_dokumentow = liczba_dokumentow.size();
    Dokument[] l_dok = new Dokument[i_liczba_dokumentow];
    System.out.println(i_liczba_dokumentow);
    try {
        Scanner s = new Scanner(new File("D:\\Temp.txt"));
        for (int i = 0; i < l_dok.length; i++) {

            while (s.hasNextLine()) {

                if (s.next() == "[Dokument]") {
                    l_dok[i] = new Dokument();
                    String line = s.nextLine();
                    if (line == "DataWyst=") {
                        String[] si = line.split("\\=");
                        l_dok[i].DataWyst = si[1];

                    }
                    if (s.next() == "SymbolKontrahenta=") {
                        String line2 = s.nextLine();
                        String[] si = line2.split("\\=");
                        l_dok[i].SymbolKontrahenta = si[1];
                    }
                    while (s.hasNextLine()) {
                        if (s.next() == "[Poz") {
                            l_dok[i].Elementy.add(new Element());
                        }
                        if (s.next() == "Nazwa=") {
                            String line2 = s.nextLine();
                            String[] si = line2.split("\\=");
                            l_dok[i].Elementy.get(i).Nazwa = si[1];
                        }
                        if (s.next() == "Symbol=") {
                            String line2 = s.nextLine();
                            String[] si = line2.split("\\=");
                            l_dok[i].Elementy.get(i).Symbol = si[1];
                        }
                        if (s.next() == "CenaNetto=") {
                            String line2 = s.nextLine();
                            String[] si = line2.split("\\=");
                            l_dok[i].Elementy.get(i).CenaNetto = si[1];
                        }
                        if (s.next() == "SymbolDostawcy=") {
                            String line2 = s.nextLine();
                            String[] si = line2.split("\\=");
                            l_dok[i].Elementy.get(i).SymbolDostawcy = si[1];
                        }
                    }

                }

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

    for (int i = 0; i < l_dok.length; i++) {

        System.out.println("Pozycja: " + l_dok[i].DataWyst + " "
                + l_dok[i].SymbolKontrahenta);
        System.out.println("Element: " + l_dok[i].Elementy.get(i).Nazwa + " "
                + l_dok[i].Elementy.get(i).Symbol+ " "+l_dok[i].Elementy.get(i).CenaNetto+ " "+ l_dok[i].Elementy.get(i).SymbolDostawcy );
    }

但循环显示错误如:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at TextFormatter.main(TextFormatter.java:90)

第90行是if (s.next() == "[Dokument]") {

感谢您的线索,建议,主要是您的时间。如果您不知道如何解决此任务,请投票支持我的帖子。

0 个答案:

没有答案
相关问题