OOjava BlueJ: foreach not applicable to expression type
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.
精彩评论