代码之家  ›  专栏  ›  技术社区  ›  Curious

当存储在数组列表中时,star*分隔符txt文件列返回多次列值

  •  -2
  • Curious  · 技术社区  · 6 年前

    我有star*定界符文件,在拆分*定界符之后,我最终需要将它存储在数组和打印列中的值中,但是它会一次又一次地连续打印相同的列值。

    注意:TXT文件中有60列。

    以下是我的代码:

    static String[] arraylist;
    
    String st;
                BufferedReader Br = null;
    
    
                File objFile = new File("C://DATA//File.txt");
    
                Br = new BufferedReader(new FileReader(objFile));
    
                LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(objFile));
                lineNumberReader.skip(Long.MAX_VALUE);
                int lines = lineNumberReader.getLineNumber();
    
    
                System.out.println("Total Rows in the File : " + lines);
    
                List<String> lis = new ArrayList<String>();
    
                while ((st = Br.readLine()) != null) {
    
                    arraylist = st.split("\\*");
    
                    for (int i = 0; i < arraylist.length; i++) {
    
                        lis.add(arraylist[1]);
                        lis.add("\n");
    
                        System.out.println("List value are " +lis);
    
                    }
    
                }
    
    
                Br.close();
    

    以下是列示例:(类似地,此文件中有60列)

    *ABC*08*31444*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*66657*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*33161*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*55771*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*20605*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*26471*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*85608*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*57735*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*46844*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*57823*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*31249*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*32394*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*46166*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*46167*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*43108*XYZ*1234*OLNBHJK*^TGJF54DFG908
    *ABC*08*43110*XYZ*1234*OLNBHJK*^TGJF54DFG908
    

    我只想打印第二列一次:例如:

    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    ABC
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Joakim Danielson    6 年前

    您只需打印数组中的第二个项。请注意,数组索引从0开始。

    while ((st = Br.readLine()) != null) {
        arraylist = st.split("\\*");
        System.out.println("List value are " + arraylist[1]);
    }
    
        2
  •  0
  •   Eslam Nawara    6 年前

    上面的代码每行只打印第三个令牌两次。这是正确的代码

       // the reading code is the same
       while ((st = Br.readLine()) != null) {
                String[] tokens = st.split("\\*");
    
                for (int i = 0; i <= tokens.length; i++) {
                    lis.add(tokens[i]);
                    lis.add("\n");
                }
       }
    
    推荐文章