0

我有一个任务来编写一个图形矩阵,该矩阵用数字标记它们并吐出连接。现在有这个非静态/静态东西的基本问题。即使我认为我了解类和该类的实例之间的区别,我也不明白这个问题。当我运行它时,首先 for 循环出现问题。不会因输入标签而暂停。我感谢任何帮助和/或批评。

public class GraphMatrix {

class Matrix {

    private int matrix[][];
    private int size;
    private String labels[];

    private void createMatrix() {
        Scanner in = new Scanner(System.in);
        System.out.println("How many points will be represented in this graph?");
        size = in.nextInt();
        matrix = new int[size][size];
        labels = new String[size];
        System.out.println("Please label each point.");
        for (int i = 1; i <= size; i++) {
            System.out.println("Enter label for point #" + (i));
            String key = in.nextLine();
            labels[i] = key;
        }
        System.out.println("Please define edges between points or enter -1 when finished:");
        int finish = 1;
        while (finish == 1) {
            int jkey = 0;
            int kkey = 0;
            int count = 0;
            boolean pass = false;
            System.out.println("Point labeled:");
            String j = in.nextLine();
            while (pass = false) {
                if (labels[count].equals(j)) {
                    jkey = count;
                    count = 0;
                    pass = true;
                }
            }
            System.out.println("to point labeled:");
            String k = in.nextLine();
            while (pass = true) {
                if (labels[count].equals(j)) {
                    kkey = count;
                    pass = false;
                }
            }
            matrix[jkey][kkey] = 1;
            System.out.println("Finished enter -1, to define more connections enter 1");
            finish = in.nextInt();
        }

    }

    private void listEdges() {
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                if (matrix[i][j] == 1) {
                    System.out.println("There is an edge between" + labels[i] + " and" + labels[j]);
                }
            }
        }
    }
}

public static void main(String[] args) {
    Matrix neo = new Matrix();
    neo.createMatrix();
    neo.listEdges();
}

}

4

2 回答 2

2

您需要在main方法中进行如下更改以消除编译器错误。

 Matrix neo = new Matrix();

  GraphMatrix graphMatrix = new GraphMatrix();
    Matrix neo = graphMatrix.new Matrix();

注意:要实例化内部类,必须先实例化外部类。然后,使用以下语法在外部对象中创建内部对象:

 OuterClass.InnerClass innerObject = outerObject.new InnerClass();
于 2013-11-11T02:58:24.720 回答
0

我在您的代码中发现了一个重大问题。

while (pass = false) {应该是while (!pass) {

并且while (pass = true) {应该是while (pass) {

另外:为什么将 Matrix 类嵌套在 GraphMatrix 类中?这对我来说没有意义。如果我是你,我不会这样做,除非这是你的任务的明确要求。

于 2013-11-11T02:58:31.563 回答