【发布时间】:2011-04-25 21:11:51
【问题描述】:
这个错误是什么意思?以及如何解决?
foreach 不适用于表达式类型。
我正在尝试编写一个方法 find()。在链表中查找字符串
public class Stack<Item>
{
private Node first;
private class Node
{
Item item;
Node next;
}
public boolean isEmpty()
{
return ( first == null );
}
public void push( Item item )
{
Node oldfirst = first;
first = new Node();
first.item = item;
first.next = oldfirst;
}
public Item pop()
{
Item item = first.item;
first = first.next;
return item;
}
}
public find
{
public static void main( String[] args )
{
Stack<String> s = new Stack<String>();
String key = "be";
while( !StdIn.isEmpty() )
{
String item = StdIn.readString();
if( !item.equals("-") )
s.push( item );
else
StdOut.print( s.pop() + " " );
}
s.find1( s, key );
}
public boolean find1( Stack<String> s, String key )
{
for( String item : s )
{
if( item.equals( key ) )
return true;
}
return false;
}
}
这是我的全部代码
【问题讨论】:
-
如果您显示您的代码会有所帮助。
-
你能贴一些代码吗?
-
如果你获得了好成绩,你会投票给答案吗?
-
对我来说编译得很好。你用的是什么编译器?太阳的?
-
问题是你的 Stack 类没有实现 Iterable,它没有覆盖
public iterator()方法,因此当你这样做时没有迭代器传递给 for 循环:for String item : Stack<String> s)。您可以通过添加存储堆栈项的 HashSet、实现 Iterable 并覆盖迭代器方法以返回 HashSet 的迭代器来解决此问题。然后你应该能够在你的类上使用 for-each 循环。
标签: java