Попробую как продолжить ввод файла - PullRequest
0 голосов
/ 20 января 2019

Моя задача - создать матрицу смежности для ориентированного графа. У меня есть текстовый файл с показывает, строка за строкой графа, например, 1 2 3 4 5 2 и так далее

Я создал два класса (Fileinput, Graph) и один основной метод (Builder). Но сейчас я застрял в создании основного метода, который будет читать текст и заполнять его в графике. Кроме того, я не понимаю, почему мой класс Graph не может получить массив, который я создал в моем классе FileInput (Eclipse говорит, что я должен создать локальную переменную). Более того, я получаю сообщение об ошибке в своем классе FileInput, что в конце я должен добавить больше}, но я могу вставить столько скобок, сколько захочу, но все равно получаю эту ошибку.

import java.io.File;
import java.util.Scanner;

public class FileInput{

    public int inputArray[][];
    public int numLines = 2772;
    public int numColumns = 2;

public FileInput(int numLines, int numColumns) {
    this.numLines = numLines;
    this.numColumns = numColumns;
    inputArray = new int [numLines][numColumns];
}

public void createArray() {
try {
        Scanner input = new Scanner(new File("Raw"));
        while (input.hasNextLine()) {
            for (int i = 0; i < numLines; i++) {
                for (int j = 0; j < numColumns; j++) {
                   try{//    System.out.println("number is ");
                    inputArray[i][j] = input.nextInt();
                     // System.out.println("number is "+ a[i][j]);
                    }
                   catch (java.util.NoSuchElementException e) {
                    e.printStackTrace();
                    }
                }
               //print the input matrix
//            System.out.println("The input sorted matrix is : ");
//            for (int i = 0; i < m; i++) {
//                for (int j = 0; j < n; j++) {
//                    System.out.println(inputarray[i][j]);

//                }
//            }
//        }
//    } catch (Exception e) {
//        e.printStackTrace();

         }
        }}}}



 public class Graph {

      public boolean adjMatrix[][];
      public int numVertices;
      public int checkMatrix[][];

 public Graph(int numVertices) {
          this.numVertices = numVertices;
          adjMatrix = new boolean[numVertices][numVertices];
          checkMatrix= new int[numVertices*numVertices][2];
    }

 public void fillCheckMatrix(int o) {
     for (int i = 0; i <numVertices; i++) {
         for (int j=0; i <numVertices; i++) {
         checkMatrix[i][j]=i;
     }}
 }

 public void addEdge(int i, int j) {
          for(int x = 0; x < checkMatrix.length; x++){
                //Iterate through all elements in input array    
                for(int m = 0; m < inputArray.length; m++){
                      if(checkMatrix[x][0] == inputArray[m][0] && checkMatrix[x][1] == inputArray[m][1]){
                          int i = x/numVertices;
                          int j = x%numVertices;
                          adjMatrix[x][j] = true;
                      }
                }}
      }

 public boolean isEdge(int i, int j) {
                  return adjMatrix[i][j];
    }

 public String toString() {
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < numVertices; i++) {
            s.append(i + ": ");
            for (boolean j : adjMatrix[i]) {
                s.append((j?1:0) + " ");
            }
            s.append("\n");
        }
        return s.toString();}


    }
public class Builder {

public static void main(String[] args) {
    // TODO Auto-generated method stub
     {
            Graph g = new Graph(4);



        }
}

}
...