Java编译时错误非静态变量无法从静态上下文引用此变量
我在hackerrank中编译这段关于图论的代码时遇到了麻烦,它似乎在其他地方工作,我不知道如何修复它。我需要找出图的所有顶点是否都是连通的。如果是,我想打印1,如果不是0。我被这个错误困住了,似乎找不到解决的办法。如果有人能帮我解决这个问题,我将非常高兴Java编译时错误非静态变量无法从静态上下文引用此变量,java,Java,我在hackerrank中编译这段关于图论的代码时遇到了麻烦,它似乎在其他地方工作,我不知道如何修复它。我需要找出图的所有顶点是否都是连通的。如果是,我想打印1,如果不是0。我被这个错误困住了,似乎找不到解决的办法。如果有人能帮我解决这个问题,我将非常高兴 import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; import java.util.LinkedList; public
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);
}
}
}
使内部类
图
和检查无向断开连接图
静态:静态类图
和静态类检查无向断开连接图
然后,通过new Solution.CheckUndirectedDisconnectedGraph.Graph(6)
您还应该将主方法移动到
解决方案下类下生成内部类图和检查无向断开图静态:静态类图和静态类检查无向断开图
然后,通过new Solution.CheckUndirectedDisconnectedGraph.Graph(6)
您还应该将main方法移动到解决方案
类解决方案下。java:62:error:non static variable这不能从静态上下文图中引用=新图(6);Solution.java:69:错误:非静态变量无法从静态上下文中引用此CheckUndirectedDisconnectedGraph c=new CheckUndirectedDisconnectedGraph();^Solution.java:61:错误:内部类Solution.CheckUndirectedDisconnectedGraph公共静态void main(字符串[]args)中的静态声明非法{修饰符'static'仅允许在常量变量声明中用于添加错误sorrySolution。java:62:error:non-static variable无法从静态上下文图Graph=new Graph(6)引用此修饰符;Solution.java:69:error:non-static变量无法从静态上下文CheckUndirectedDisconnectedGraph c=new CheckUndirectedDisconnectedGraph()引用此变量;^Solution.java:61:错误:内部类解决方案中的静态声明非法。CheckUndirectedDisconnectedGraph公共静态void main(字符串[]args){修饰符'static'只允许在常量变量声明中添加错误,所以我得到这个错误…解决方案。java:10:error:modifier static此处不允许静态类图{^Note:Solution.java使用未经检查或不安全的操作。注意:使用-Xlint:unchecked重新编译以获取详细信息。1错误刚刚编辑了我的帖子,我误读了类结构。您还应该避免使用嵌套类,除非您有充分的理由使用它们。然后,我会收到此错误…解决方案。java:10:错误:修饰符static not allowed here静态类图{^Note:Solution.java使用未经检查或不安全的操作。注意:使用-Xlint:unchecked重新编译以获取详细信息。1错误刚刚编辑了我的帖子,我误读了类结构。您还应该避免使用嵌套类,除非您有充分的理由使用它们。
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