Java 图形矩阵项目(静态中的非静态)

Java 图形矩阵项目(静态中的非静态),java,graph,matrix,Java,Graph,Matrix,我有一个任务,要编写一个图形矩阵,用数字标记它们,并吐出连接。现在我们有一个非静态/静态的基本问题。我不理解这个问题,尽管我认为我理解了类和该类实例之间的区别。当我运行这个程序时,首先循环有一个问题。不会暂停以输入标签。我感谢任何帮助和/或批评 public class GraphMatrix { class Matrix { private int matrix[][]; private int size; private String labels[];

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

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();
}
公共类图形矩阵{
类矩阵{
私有整数矩阵[];
私有整数大小;
私有字符串标签[];
私有void createMatrix(){
扫描仪输入=新扫描仪(系统输入);
System.out.println(“此图中将表示多少个点?”);
大小=in.nextInt();
矩阵=新整数[大小][大小];
标签=新字符串[大小];
System.out.println(“请标记每个点”);

对于(inti=1;i您需要在main方法中进行如下更改,以删除编译器错误

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

 OuterClass.InnerClass innerObject = outerObject.new InnerClass();

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

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

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


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

如果你的编译器给你任何错误,请将它们发布在这里,并告诉我们哪一行正在导致这些错误。在仔细查看您的代码后,我没有发现任何关于静态和非静态问题的问题。正如气垫船所说,请发布您的错误。我同意@SteveP。看起来您的标题与您显示的代码完全无关。请澄清。或者至少
pass==false
。存在一个错误几行之后出现的类似问题是
pass=true
。应该是
while(pass)
while(pass==true)
。编译没有问题。我的问题是在第一个for循环中,它不等待输入,因此我得到:输入点的标签#1输入点的标签#2不等待标签的输入#1可能值得注意的是,几行之后他在
while(pass=true)
while(pass==true)中遇到了同样的问题
或简单
while(pass)
,两者都可以接受,但单个
=
while
中都有问题。
  GraphMatrix graphMatrix = new GraphMatrix();
    Matrix neo = graphMatrix.new Matrix();
 OuterClass.InnerClass innerObject = outerObject.new InnerClass();