OOjava BlueJ:foreach不适用于表达式

时间:2011-02-17 14:34:45

标签: java

我使用此代码收到此错误:

public class Cafévoetbalploeg
{
// instance variables - replace the example below with your own
private String naam;
private int stichtingsjaar;
private String plaats;
private int totaalDoelpunten;
private int aantalGewonnenWedstrijden;
private Wedstrijdlijst wedstrijdlijst;    

/**
 * Constructor for objects of class Cafévoetbalploeg
 */
public Cafévoetbalploeg() {
    stichtingsjaar = 0;

}    

/**
 *De naam van de ploeg
 *
 *@param ploegnaam geef de naam van de ploeg in
 */
public void naam(String ploegnaam) {
    naam = ploegnaam;        
}

/**
 *Het stichtingsjaar
 *
 *@param jaar geef het stichtingsjaar in
 */
public void stichtingsjaar(int jaar) {
    stichtingsjaar = jaar;        
}
/**
 *De locatie waar de ploeg speelt
 *
 *@param geef de locatie in waar de ploeg speelt
 */
public void plaats(String locatie) {
    plaats = locatie;
}

public int getAantalGewonnenWedstrijden (int jaar) {
    for (Wedstrijd w: wedstrijdlijst) 
    {
        if(wedstrijd.getJaar() == jaar) {
            w = wedstrijd;
        }              
    }       
}    

/**
 * Geef de naam van de ploeg
 * 
 * @return naam de naam van de ploeg
 */
public String naam() {
    return naam;
}
/**
 * Geef het stichtingsjaar van de voetbalploeg
 * 
 * @return stichtingsjaar het stichtingsjaar van de ploeg
 */
public int stichtingsjaar() {
    return stichtingsjaar;
}
/**
 * Geef de plaats waar de ploeg speelt
 * 
 * @return plaats de plaats van de ploeg
 * 
 */
public String plaats() {
    return plaats;
}

}

它被困在这里:

for (Wedstrijd w: wedstrijdlijst)

我只是java的初学者,所以我不知道如何解决这个错误。

为什么这不起作用?


import java.util.*;

/ **  *在这里写一个关于Wedstrijdlijst类的描述。  *  * @author(你的名字)  * @version(版本号或日期)  * /

公共课Wedstrijdlijst {     //实例变量 - 用你自己的

替换下面的例子
private ArrayList<Wedstrijd> wedstrijden;

/**
 * Constructor for objects of class Wedstrijdlijst
 */
public Wedstrijdlijst()
{
   wedstrijden = new ArrayList<Wedstrijd>();

}

public void nieuweWedstrijd(Wedstrijd wedstrijd) {

    wedstrijden.add(wedstrijd);


}

这是我的班级Wedstrijdlijst

2 个答案:

答案 0 :(得分:3)

因为Wedstrijdlijst类没有实现Iterable接口

答案 1 :(得分:-1)

enhanced for loop或for-each循环是Java5中的一个新功能,可帮助迭代Iterables(实现Iterable接口的类)和数组。

所以你可以拥有像

这样的东西
List<String> names = ...
...
for(String name : names)
{
}

因此,为了让for (Wedstrijd w: wedstrijdlijst)能够发挥作用,您的wedstrijdlijst应该实施Iterable

BTW,班级Wedstrijdlijst包含什么?如果它里面有某种列表(在你评论之后,看起来就是这种情况),比如

class Wedstrijdlijst
{
   private List<Wedstrijd> list
   ...
   public getList()
   {
   }
   ...

然后你就可以在列表中循环:

for (Wedstrijd w: wedstrijdlijst.getList())

此外,如果这是您的设计,请尝试重新访问它。您甚至可能没有单独的Wedstrijdlijst课程。 java.util.List类中的Cafévoetbalploeg应该足够了)

<强>更新

根本不需要Wedstrijdlijst课程。在Cafévoetbalploeg中,移除Wedstrijdlijst wedstrijdlijst并添加ArrayList<Wedstrijd> wedstrijden

现在你可以根据需要循环遍历wedstrijden。