error in BlueJ (java)

Status
Niet open voor verdere reacties.

noisy103

Gebruiker
Lid geworden
21 dec 2012
Berichten
7
Code:
import java.util.*;
import java.util.ArrayList;
public class Club
{
    private String naamClub, datumClub;
    private ArrayList<Speler> lijst;
    
    public int getAantalSpelers()
    {
        return lijst.size();
    }
    
    public Speler getSpeler(String spelerNummer)
    {
        int index = Integer.parseInt( spelerNummer );
        Speler speler = lijst.get(index);
        return speler;
    }
    
    public Speler sluitNieuweSpelerAan()
    {
        int nummer = getAantalSpelers();
        Speler speler = [B]new Speler(nummer);[/B]
        lijst.add(speler);
        return nummer;
    }
    
    public void printOverzicht()
    {
        for(Speler speler : lijst) {speler.printSpeler();}
    }
}

Code:
import java.util.*;
import java.util.ArrayList;
public class Speler
{
    private String naamSpeler, voornaamSpeler, afdeling, aansluitnummer, geboortedatum;
    private int schoenmaat;
   
    public void spelerAanmaak(String naamSpeler, String voornaamSpeler, String afdeling, String aansluitnummer, String geboortedatum, int schoenmaat)
    {
        this.naamSpeler=naamSpeler;
        this.voornaamSpeler=voornaamSpeler;
        this.afdeling=afdeling;
        this.aansluitnummer=aansluitnummer;
        this.geboortedatum=geboortedatum;
        this.schoenmaat=schoenmaat;
    }
    public void printSpeler()
    {
        System.out.println(naamSpeler + " - " + voornaamSpeler + " - " + geboortedatum + " - " + afdeling + " - " + aansluitnummer + " - " + schoenmaat);
    }
    public String getGeboortedatum(int jaar, int maand, int dag)
    {
        return geboortedatum;
    }
    public String getAfdeling()
    {
        return afdeling;
    }
    public int getSchoenmaat()
    {
        return schoenmaat;
    }
    public String veranderAfdeling(String afdelingIN)
    {
        afdeling = afdelingIN;
        return afdeling;
    }
    public int veranderSchoenmaat(int schoenmaatIN)
    {
        schoenmaat = schoenmaatIN;
        return schoenmaat;
    }
}

ERROR bij class Club:
Constructor Speler in class Speler cannot be applied to given types;
required: no arguments
found: int
reason: actual and formal argument lists differ in length

the operator that you use here cannot be used for the type of value you are using it for. You are either using the wrong type here, or the wrong operator.


Weet iemand raad? En hoe ik een integer.parseInt hier kan bij gebruiken?
 
Het probleem is dat de constructor die je aanroept in de klasse Club (Speler(nummer)) niet bestaat in de klasse Speler (de enige constructor die voor die klasse bestaat is de constructor die automatisch wordt gegenereerd: Speler()). Als je goed kijkt dan zie je dat je de constructor voor de klasse Speler in de klasse Club hebt gezet!Verder is spelerAanmaak een methode en dus geen constructor. Hieronder vind je een correcte opbouw:

[cpp]
public class Club {
public Club(/* ... */) {
// ...
}
}

public class Speler {
public Speler(/* ... */) {
// ...
}

// en een correcte implementatie voor de spelerAanmaak methode zou iets als het onderstaande kunnen zijn:
public static Speler spelerAanmaak(/* ... */) {
Speler speler = // ...
return speler;
}
}
[/cpp]
 
Code:
import java.util.*;
import java.util.ArrayList;
public class Club
{
    private String naamClub, datumClub;
    private ArrayList<Speler> lijst;
    private String naamSpeler, voornaamSpeler, afdeling, aansluitnummer, geboortedatum;
    private int schoenmaat, geboorteDag, geboorteMaand, geboorteJaar, leeftijd;
   
    public Club()
    {
        lijst = new ArrayList<Speler>();
    }
    
    public Speler sluitNieuweSpelerAan()
    {
        Speler speler = new Speler();
        lijst.add(speler);
        return speler;
    }
    
    public int getAantalSpelers()
    {
        return lijst.size();
    }
    
    public Speler getSpeler(String spelerNummer)
    {
        int index = Integer.parseInt( spelerNummer );
        Speler speler = lijst.get(index);
        return speler;
    }
    
    public void printOverzicht()
    {
        for(Speler speler : lijst) {speler.printSpeler();}
    }
    
    private int schoenmaatAantal;
    public void printSchoenmaatAantal()
    {
        for(int i = 28; i <49; i++)
        {
            for (int j = 0; j<=lijst.size(); j++){
              Speler speler = lijst.get(j);
              if(i==speler.getSchoenmaat()){
                 schoenmaatAantal+=1;
                   }
           }
           System.out.println("Er zijn " + schoenmaatAantal + " spelers die schoenmaat " + i + " hebben.");
        }
    }
    
    private int leeftijdAantal;
    public void printLeeftijdAantal()
    {
        for(int i = 0; i <110; i++)
        {
            for (int j = 0; j<=lijst.size(); j++){
              if(i==lijst.get(j).getLeeftijd()){
                 leeftijdAantal+=1;
                   }
           }
           System.out.println("Er zijn " + schoenmaatAantal + " spelers die schoenmaat " + i + " hebben.");
        }
    }
}


Code:
import java.util.*;
import java.util.ArrayList;
public class Speler
{
    private String naamSpeler, voornaamSpeler, afdeling, aansluitnummer, geboortedatum;
    private int schoenmaat, geboorteDag, geboorteMaand, geboorteJaar, leeftijd;
    
     public Speler gegevens(String naamSpeler, String voornaamSpeler, String afdeling, String aansluitnummer, int jaar, int maand, int dag, int schoenmaat, int leeftijd)
    {
        this.naamSpeler=naamSpeler;
        this.voornaamSpeler=voornaamSpeler;
        this.afdeling=afdeling;
        this.aansluitnummer=aansluitnummer;
        this.geboorteDag=geboorteDag;
        this.geboorteMaand=geboorteMaand;
        this.geboorteJaar=geboorteJaar;
        this.schoenmaat=schoenmaat;
        this.leeftijd=leeftijd;
        return new Speler();
    }
    public void printSpeler()
    {
        System.out.println(naamSpeler + " - " + voornaamSpeler + " - " + getGeboortedatum() + " - " + afdeling + " - " + aansluitnummer + " - " + schoenmaat);
    }
    public String getGeboortedatum()
    {
        geboortedatum = geboorteJaar + "-" + geboorteMaand + "-" + geboorteDag;
        return geboortedatum;
    }
    public String getAfdeling()
    {
        return afdeling;
    }
    public int getSchoenmaat()
    {
        return schoenmaat;
    }
    public int getLeeftijd()
    {
        return leeftijd;
    }
    public String veranderAfdeling(String afdelingIN)
    {
        afdeling = afdelingIN;
        return afdeling;
    }
    public int veranderSchoenmaat(int schoenmaatIN)
    {
        schoenmaat = schoenmaatIN;
        return schoenmaat;
    }
}

Dit is momenteel de code: dit werkt nu goed maar er zitten nog wat foutjes in. In blueJ werken deze 2 methodes niet, ik vond na wat surfen geen oplossing op het internet. Wie kan me helpen, het gaat om:

private int schoenmaatAantal;
public void printSchoenmaatAantal()
{
for(int i = 28; i <49; i++)
{
for (int j = 0; j<=lijst.size(); j++){
Speler speler = lijst.get(j);
if(i==speler.getSchoenmaat()){
schoenmaatAantal+=1;
}
}
System.out.println("Er zijn " + schoenmaatAantal + " spelers die schoenmaat " + i + " hebben.");
}
}

private int leeftijdAantal;
public void printLeeftijdAantal()
{
for(int i = 0; i <110; i++)
{
for (int j = 0; j<=lijst.size(); j++){
if(i==lijst.get(j).getLeeftijd()){
leeftijdAantal+=1;
}
}
System.out.println("Er zijn " + schoenmaatAantal + " spelers die schoenmaat " + i + " hebben.");
}
}
}



Alvast bedankt!
 
Dit zijn de bijhorende opgaves:

e. printSchoenmaatAantal() :
>> op terminal : aantal spelers per schoenmaat vanaf maat 28 tem maat 48;
f. printLeeftijdAantal() :
>> op terminal : aantal spelers per leeftijd.
 
Een hele simpele oplossing is het aanmaken van een array met een grootte van MAX_WAARDE + 1 (aangezien je dan array[waarde] kunt gebruiken voor het tellen). Zie het onderstaande voorbeeld:

[cpp]
public void printSchoenmaatAantal() {
int[] arr = new int[49];
for (Speler speler : lijst) ++arr[speler.getSchoenmaat()];
for (int maat = 28; maat <= 48; ++maat) System.out.println("Er zijn " + arr[maat] + " spelers die schoenmaat " + maat + " hebben.");
}

public void printLeeftijdAantal() {
int[] arr = new int[111];
for (Speler speler : lijst) ++arr[speler.getLeeftijd()];
for (int leeftijd = 0; leeftijd <= 110; ++leeftijd) System.out.println("Er zijn " + arr[leeftijd] + " spelers die de leeftijd " + leeftijd + " hebben.");
}
[/cpp]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan