Java ошибка времени компиляции нестатическая c переменная, на которую нельзя ссылаться из статического c контекста - PullRequest
1 голос
/ 10 июля 2020

У меня проблемы с компиляцией этого кода теории графов в хакерранке, похоже, он работает в другом месте, я не знаю, как это исправить. Мне нужно выяснить, все ли вершины графа связаны или нет. Если это так, я хочу напечатать 1, если не 0. Я застрял на этой ошибке и, кажется, не могу найти, как ее решить. Я был бы очень рад, если бы кто-нибудь мог мне с этим помочь.

import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.LinkedList;
public class Solution {

class CheckUndirectedDisconnectedGraph {
        class Graph{
        int vertices;
        LinkedList<Integer> adjList [];

        public Graph(int vertices){
            this.vertices = vertices;
            adjList = new LinkedList[vertices];
            for (int i = 0; i <vertices ; i++) {
                adjList[i] = new LinkedList<>();
            }
        }

        public void addEdge(int source, int destination){
            adjList[source].addFirst(destination);
            adjList[destination].addFirst(source);
        }
    }

    public void isConnected(Graph graph){

        int vertices = graph.vertices;
        LinkedList<Integer> adjList [] = graph.adjList;

        boolean[] visited = new boolean[vertices];

        DFS(0, adjList, visited);

        int count = 0;
        for (int i = 0; i <visited.length ; i++) {
            if(visited[i])
                count++;
        }
        if(vertices==count){
            System.out.println(1);
        }else{
            System.out.println(0);
        }
    }

    public void DFS(int source, LinkedList<Integer> adjList [], boolean[] visited){

        visited[source] = true;

        for (int i = 0; i <adjList[source].size() ; i++) {
            int neighbor = adjList[source].get(i);
            if(visited[neighbor]==false){
                DFS(neighbor, adjList, visited);
            }
        }
    }

    public static void main(String[] args) {
        Graph graph = new Graph(6);
        graph.addEdge(5,4);
        graph.addEdge(1,2);
        graph.addEdge(1,3);
        graph.addEdge(2,4);
        graph.addEdge(3,4);

        CheckUndirectedDisconnectedGraph c = new CheckUndirectedDisconnectedGraph();
        c.isConnected(graph);
    }

}
} 

Вывод ошибок:

Solution.java:62: error: non-static variable this cannot be referenced from a static context Graph graph = new Graph(6); Solution.java:69: error: non-static variable this cannot be referenced from a static context CheckUndirectedDisconnectedGraph c = new CheckUndirectedDisconnectedGraph(); ^ Solution.java:61: error: Illegal static declaration in inner class Solution.CheckUndirectedDisconnectedGraph public static void main(String[] args) { modifier 'static' is only allowed in constant variable declarations 


1 Ответ

0 голосов
/ 10 июля 2020

Сделайте внутренний класс Graph и CheckUndirectedDisconnectedGraph stati c: static class Graph и static class CheckUndirectedDisconnectedGraph

Затем создайте свой график с помощью new Solution.CheckUndirectedDisconnectedGraph.Graph(6)

Вы также должны переместите свой основной метод в класс Solution

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...