Столбец TXT с разделителем-звездочкой возвращает значение столбца несколько раз при сохранении в списке массивов - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть файл звездочки * разделитель, который, наконец, мне нужно сохранить в массиве после разделения * разделитель *, где он хранит значение в массиве и столбце печати, однако он постоянно печатает одно и то же значение столбца снова и снова.

Примечание: в текстовом файле 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

Я хочу напечатать 2-й столбец только один раз: Например:

ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Все, что вам нужно сделать, это напечатать второй элемент в массиве.Обратите внимание, что индекс массива начинается с 0.

while ((st = Br.readLine()) != null) {
    arraylist = st.split("\\*");
    System.out.println("List value are " + arraylist[1]);
}
0 голосов
/ 20 декабря 2018

Приведенный выше код печатает третий токен только дважды в каждой строке.Вот исправленный код

   // 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");
            }
   }
...