我是Java的初学者,我需要使用它的arraylists打印图表的DFS来存储邻接列表。当我尝试编译时,我收到以下错误:
Type mismatch: cannot convert from Object to Integer
The type of the expression must be an array type but it resolved to Stack
The type of the expression must be an array type but it resolved to Stack
代码如下:
package principal;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String []arg)
{
ArrayList<List<Integer>>L=new ArrayList<List<Integer>>();
ArrayList<Integer>l=new ArrayList<Integer>();
int nod;
Scanner sc = null;
try {
sc=new Scanner(new File("Graph.txt"));
while (sc.hasNextInt())
{
do
{
nod=sc.nextInt();
if(nod!=0) l.add(nod);
}while(nod!=0);
L.add((List<Integer>) l.clone());
l.clear();
}
Stack stack = new Stack();
Stack viz = new Stack();
System.out.println("Root: ");
Integer root = sc.nextInt();
stack.push(root);
while (!stack.isEmpty())
{
Integer node = stack.pop();
System.out.print(node + " ");
viz[node]=1;
for (Integer child : L.get(node))
{
if(viz[child]!=1)
{
stack.push(child);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
finally{sc.close();}
}
}
Graph.txt包含以下内容
2 3 4
1 3 4
1 2 4
1 2 3
答案 0 :(得分:0)
您无法对堆栈使用数组语法(array[index]
),您必须使用push()
,pop()
和peek()
Stacks以先进先出的方式工作。因此,堆栈中唯一可访问的元素是最重要的元素。使用pop()
时,删除顶部项目以便可以访问下一个项目。 push()
用于在顶部放置一个值,peek()
用于检查顶部项目而不会弹出它。
如果我有以下堆栈
Sam
Dan
Adam
使用pop()
,将返回“Sam”并将其从堆栈中删除,因此它将如下所示。
Dan
Adam
推出“查理”将使这个堆栈看起来像这样。
Charlie
Dan
Adam
我必须弹出两次才能访问“Adam”
答案 1 :(得分:0)
viz
是一个堆栈,而不是一个数组。您无法在其上使用数组表示法 - viz[node]
。
Integer node = stack.pop();
这也是一个错误,因为您的Stack
不是通用的,因此您必须将pop()
的结果转换为Integer
:
Integer node = (Integer) stack.pop();
另一种方法是更改堆栈类型:
Stack<Integer> stack = new Stack<Integer>();
答案 2 :(得分:0)
<强>第一强>
类型不匹配:无法从Object转换为Integer
stack.pop()
会返回Object
引用,您需要输入转换为Integer
// Type caste or define stack as Stack<Integer>
Integer node = (Integer) stack.pop();
<强>第二强>
表达式的类型必须是数组类型,但它已解析为Stack
viz[node]=1; // viz is Stack, define it as array