как я могу прочитать форматированный граф данных файла Java - PullRequest
0 голосов
/ 31 марта 2019

Я читаю данные графика для прилегающей матрицы, и она форматируется следующим образом:

0
   176     67
   665    185
  1129     26
  1414    114
  1748    205

1
   140    248
   591    175
  1920     68
  2229     31

2
   778    476
   825    447
   888    258
  1179   ....

Одна числовая строка - начальная вершина, за которой следуют линии конечных вершин с длиной ребра

0 - начальная вершина

176 - конечная вершина

67 - длина ребра

665 - конечная вершина

185 - длина ребра

и т. Д. Вот что я попробовал:

public void ValueAssign()
         throws IOException {
         Scanner inFile = new Scanner(new File("list1.txt"));
         String s = inFile.nextLine();
         int NofV = Integer.parseInt(s); // number of vertices
         int NofE = Integer.parseInt(s); // number of edges
         int v1,v2, edge; // v1 - vertex 1, v2 - vertex 2
         while ((s = inFile.nextLine()) != null) {

             Scanner in = new Scanner(s);
             in.useDelimiter(" ");
             v2 = in.nextInt();
             edge = in.nextInt();
         }


    }

Как я могу это прочитать?

1 Ответ

0 голосов
/ 31 марта 2019

Попробуйте этот код

public static void main(String[] args) throws FileNotFoundException {
    Scanner inFile = new Scanner(new File("list1.txt"));
    int startingVertex, endingVertex, edgeLength;
    while (inFile.hasNextLine()) {
        String trimmedLine = inFile.nextLine().trim();

        //Skip empty lines
        if(trimmedLine.isEmpty()){
            continue;
        }

        String values[] = trimmedLine.split("\\s+");

        if(values.length > 1){
            endingVertex = Integer.parseInt(values[0]);
            edgeLength = Integer.parseInt(values[1]);

            //Do necessary operations

        }else if(values.length > 0){
            startingVertex = Integer.parseInt(values[0]);

            //Do necessary operations

        }
    }
}
...