Java中的未知编译器错误,我认为是';这是一个范围问题
我正在实现类的广度优先和深度优先搜索,在编译时遇到了一个我无法理解的错误。错误是: 符号:变量列表Java中的未知编译器错误,我认为是';这是一个范围问题,java,compiler-errors,scope,Java,Compiler Errors,Scope,我正在实现类的广度优先和深度优先搜索,在编译时遇到了一个我无法理解的错误。错误是: 符号:变量列表 位置:类java.lang.Object for(graphNode节点:map.get(i).aList){ aList变量是一个树集,存储在每个节点中,包含该节点在相应图形中附加到的任何节点。我在上面的main方法中使用完全相同的语法,它不会给出任何错误。此外,当我在traverse方法中打印地图中的所有节点时,它打印的是整数键,而不是graphNod我现在很困惑,谢谢你的帮助 import
位置:类java.lang.Object for(graphNode节点:map.get(i).aList){ aList变量是一个树集,存储在每个节点中,包含该节点在相应图形中附加到的任何节点。我在上面的main方法中使用完全相同的语法,它不会给出任何错误。此外,当我在traverse方法中打印地图中的所有节点时,它打印的是整数键,而不是graphNod我现在很困惑,谢谢你的帮助
import java.util.*;
import java.io.*;
public class HW1 {
public static void main (String[] args) throws Exception {
Scanner sc = new Scanner(new File(args[0]));
sc.useDelimiter("(\\s)"); // divide up by whitespcae
TreeMap<Integer, graphNode> map = new TreeMap<Integer, graphNode>();
int totalNodes = Integer.parseInt(sc.next());
int totalEdges = Integer.parseInt(sc.next());
// Fill up the map with nodes
for(int i = 1; i <= totalNodes ; i++) {
map.put(i, new graphNode(i, null, 10000));
}
// Add all the edges to the adjacency list
while(sc.hasNext()){
int start = Integer.parseInt(sc.next());
int end = Integer.parseInt(sc.next());
graphNode startNode = map.get(start);
graphNode endNode = map.get(end);
if(!startNode.aList.contains(endNode)){
startNode.aList.add(endNode);
}
if(!endNode.aList.contains(startNode)){
endNode.aList.add(startNode);
}
}
for(int i = 1; i <= map.size(); i++){
for(graphNode node: map.get(i).aList){
System.out.print(node.value+" ");
}
System.out.println("");
}
traverse(map);
}
public static void traverse(TreeMap map){
for(int i = 1; i <= map.size(); i++){
for(graphNode node: map.get(i).aList){
System.out.print(node.value+" ");
}
System.out.println("");
}
}
}
import java.util.*;
import java.io.*;
public class graphNode implements Comparable<graphNode> {
int value;
int distance;
graphNode prev;
TreeSet<graphNode> aList;
String color;
public graphNode(int value, graphNode prev, int distance) {
this.value = value;
this.prev = prev;
this.distance = distance;
aList = new TreeSet<graphNode>();
String color = "white";
}
public String toString() {
return value + "";
}
public int compareTo(graphNode other) {
if (this.value < other.value){
return -1;
}else if (this.value == other.value){
return 0;
}else{
return 1;
}
}
import java.util.*;
导入java.io.*;
公共级HW1{
公共静态void main(字符串[]args)引发异常{
Scanner sc=新扫描仪(新文件(args[0]);
sc.useDelimiter(“(\\s)”);//除以whitespcae
TreeMap map=newtreemap();
inttotalNodes=Integer.parseInt(sc.next());
inttotaledges=Integer.parseInt(sc.next());
//用节点填充地图
对于main
中的(int i=1;i,map
是一个
TreeMap<Integer, graphNode> map = new TreeMap<Integer, graphNode>();
在traverse()
方法中,映射被声明为TreeMap-map
。因此,您使用的是原始(非泛型)TreeMap类型,编译器不知道映射中存储的键和值的类型。它只知道它们是对象实例
将地图声明为TreeMap
甚至map
,一切都会很好
同时,将graphNode
重命名为graphNode
。类以Java中的大写字母开头。发布准确完整的错误消息,并告诉我们它指的是哪一行。HW1.Java:61:找不到符号符号:变量列表位置:class Java.lang.Object for(graphNode节点:map.get(i).aList){^1错误您的错误发生在以下行之一-for(graphNode节点:map.get(i).aList){
中的任何类型的对象,您都需要在该映射中为列表放置一个访问器方法,并使用该方法代替whateverObj.getList()
,而不是map.get(i).aList
。关于“找不到符号”错误,没有什么未知的。
public static void traverse(TreeMap<Integer, graphNode> map){