Java foreach不适用于表达式类型
这个错误意味着什么?我该怎么解决呢 foreach不适用于表达式类型 我正在尝试编写一个find()方法。在linkedlist中查找字符串的Java foreach不适用于表达式类型,java,Java,这个错误意味着什么?我该怎么解决呢 foreach不适用于表达式类型 我正在尝试编写一个find()方法。在linkedlist中查找字符串的 public class Stack<Item> { private Node first; private class Node { Item item; Node next; } public boolean isEmpty() { ret
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;
}
}
公共类堆栈
{
私有节点优先;
私有类节点
{
项目;
节点下一步;
}
公共布尔值为空()
{
返回(first==null);
}
公共作废推送(项目)
{
节点oldfirst=第一个;
第一个=新节点();
first.item=项目;
first.next=oldfirst;
}
公共物品
{
项目=第一个。项目;
first=first.next;
退货项目;
}
}
公众发现
{
公共静态void main(字符串[]args)
{
堆栈s=新堆栈();
String key=“be”;
而(!StdIn.isEmpty())
{
String item=StdIn.readString();
如果(!item.equals(“-”)
s、 推(项);
其他的
打印(s.pop()+);
}
s、 find1(s,key);
}
公共布尔find1(堆栈s,字符串键)
{
用于(字符串项:s)
{
如果(项等于(键))
返回true;
}
返回false;
}
}
这是我的全部代码请确保您的for构造如下所示
LinkedList<String> stringList = new LinkedList<String>();
//populate stringList
for(String item : stringList)
{
// do something with item
}
<E> boolean contains(E e, List<E> list) {
for(E v : list) if(v.equals(e)) return true;
return false;
}
LinkedList stringList=新建LinkedList();
//填充字符串列表
用于(字符串项:stringList)
{
//对这个项目做些什么
}
是否使用迭代器而不是数组
您不能只将迭代器
传递到增强的for循环中。以下第2行将生成编译错误:
Iterator<Penguin> it = colony.getPenguins();
for (Penguin p : it) {
我刚看到你有自己的Stack类。你知道SDK中已经有一个了,对吧?
您需要实现
Iterable
接口,以便将这种形式的用于
循环:,而不使用代码,这只是一个救命稻草
如果您正试图编写自己的列表查找方法,它将是这样的
LinkedList<String> stringList = new LinkedList<String>();
//populate stringList
for(String item : stringList)
{
// do something with item
}
<E> boolean contains(E e, List<E> list) {
for(E v : list) if(v.equals(e)) return true;
return false;
}
boolean包含(E,列表){
对于(ev:list),如果(v.equals(E))返回true;
返回false;
}
如果你能展示你的代码会有帮助的。你能发布一些代码吗?如果你的分数很好,你会投票给我答案吗?对我来说很好。你在用什么编译器?Sun的?问题是堆栈类没有实现Iterable,它没有重写公共迭代器()
方法,因此在执行此操作时没有向for循环传递迭代器:for String item:Stack s)
。您可以通过添加存储堆栈项的哈希集、实现Iterable并重写迭代器方法以返回哈希集的迭代器来解决这个问题。然后您应该能够在类中使用for-each循环。