开发者

OOjava BlueJ: foreach not applicable to expression type

开发者 https://www.devze.com 2023-02-11 06:03 出处:网络
I get this error with this code: public class Cafévoetbalploeg { // instance variables - replace the example below with your own

I get this error with this code:

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 getAantalGewonne开发者_如何学PythonnWedstrijden (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;
}

}

It got stuck here:

for (Wedstrijd w: wedstrijdlijst)

I am just a beginner in java so i don't know how to solve this error.

Why does this not work?


import java.util.*;

/** * Write a description of class Wedstrijdlijst here. * * @author (your name) * @version (a version number or a date) */

public class Wedstrijdlijst { // instance variables - replace the example below with your own

private ArrayList<Wedstrijd> wedstrijden;

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

}

public void nieuweWedstrijd(Wedstrijd wedstrijd) {

    wedstrijden.add(wedstrijd);


}

This is my class Wedstrijdlijst


Because the Wedstrijdlijst class doesn't implement the Iterable interface


The enhanced for loop or the for-each loop is a new feature in Java5 to help iterate through Iterables (classes implementing the Iterable interface) and over arrays.

So you can have something like

List<String> names = ...
...
for(String name : names)
{
}

So, for your for (Wedstrijd w: wedstrijdlijst) to work, your wedstrijdlijst should implement Iterable.

BTW, What does the class Wedstrijdlijst contain? If it has a list of some sort inside (After you comment, looks like this is the case), like

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

then you will be able to loop through the list:

for (Wedstrijd w: wedstrijdlijst.getList())

Also, if this is your design, try revisiting it. You may not even a separate Wedstrijdlijst class. A java.util.List in the Cafévoetbalploeg class should be sufficient)

Update:

You dont need the Wedstrijdlijst class at all. In the Cafévoetbalploeg, remove Wedstrijdlijst wedstrijdlijst and add ArrayList<Wedstrijd> wedstrijden

Now you can loop over wedstrijden as you wanted.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号