Java

Moderators: jkien, Xilvo

Berichten: 41

Re: Java

Ik probeer een constructor aan te roepen en krijg de volgende foutmelding bij het creëren van een instantie van de klasse Product.

De foutmelding: Error: empty character literal

De code:
 
public class Product
{
    private double prijs;//Prijs van het product.
    private int aantal;//Aantal items van dit product in voorraad.
    private String naam;//Naam van dit product.
    private char productKlasse;//A:premium, B:medium, C: huis
    private boolean bewaarInKoelcel;//Gekoeld bewaard?
 
    /**
     * Constructor voor objecten van Klasse Product.
     * @param   naam    De naam van het product.
     * @param   prijs   De prijs van dit product.
     * @param   klasse  De productklasse van het product.
     * @param   aantal  Het aantal items van het product.
     */
    public Product(String naam, double prijs, char klasse, int aantal)
    {
        this.naam = naam;
        this.prijs = prijs; 
        this.aantal = aantal;
        productKlasse = klasse;
        bewaarInKoelcel = false;
    }
 
    /**
     * Geeft de naam van het product terug.
     * @return    De naaam van het product.
     */
    public String getNaam()
    {
        return naam;
    
    
    }
     /**
     * Geeft het aantal items in voorraad van het product.
     * @return    Aantal items in voorraad.
     */
    
    public int getAantal()
    {
        return aantal;
    }
        
    /**
     * Stelt de prijs in van het product.
     * @param   prijs   De nieuwe prijs van het product.
     */
    public void setPrijs(double prijs)
    {
        this.prijs = prijs;
    }
    
    /**
     * Het product toevoegen of verwijderen uit de koelcel.
     * @param  bewaarInKoelcel    True indien te bewaren in de koelcel, anders false.
     */
    public void setBewaarInKoelcel(boolean bewaarInKoelcel)
    {
        this.bewaarInKoelcel = bewaarInKoelcel;
    }
    
    /**
     * Berekent de prijs incl. BTW-bedrag van een aantal items van dit product.
     *
     * @param aantal Aantal items van dit product.
     * @param btwTarief Het BTW-tarief [0,1] van dit product.
     * @return De prijs incl. BTW van een aantal items van dit product.
     */
    public double berekenPrijsBTW(int aantal, double btwTarief)
    {
        return (aantal * prijs * (1 + btwTarief));
    }
    
    /**
     * Berekent de nettowaarde van de voorraad van dit product.
     * @return    De nettowaarde van de voorraad van dit product.
     */
    public double berekenNettoVoorraadWaarde()
    {
        return aantal * prijs;
    }
    
  
    }

Ik ga ervan uit dat ik iets in de code fout heb staan, alle parameters worden op de juiste manier ingevoegd.

Bij voorbaat dank! :)
 

Gebruikersavatar
Berichten: 2.906

Re: Java

Kun je laten zien hoe je de constructor hebt aangeroepen?
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Berichten: 7.068

Re: Java

Vermoeden: Je hebt ergens '' in je code (twee single quotes met niks er tussen). Dat mag niet (het is geen legaal karakter).

Berichten: 41

Re: Java

Product Product1 = new Product(2.50, 2, ''Product1'', 'A', false);
 
Dit is het stukje code waarmee ik een instantie wou aanmaken van de klasse product en waarmee de constructor dus aangeroepen werd.

Bedankt Evilbro!

Maar ik vraag me af, zou mijn IDE dan niet een fout moeten weergeven op het moment dat ik de code compileer?

De code is volgens mijn IDE goed, alleen zodra ik de constructor aanroep om een object te creëren krijg ik de desbetreffende foutmelding.

De melding heeft volgens mij te maken met de eerste string.

Maar ik ben echt een beginner met programmeren, dus zeker weet ik het niet.

Berichten: 7.068

Re: Java

Er is sowieso iets raars gaande. Jouw constructor:

Code: Selecteer alles

Product(String naam, double prijs, char klasse, int aantal)
Ik tel 4 argumenten (String, double, char, int)

Jouw aanroep:

Code: Selecteer alles

Product Product1 = new Product(2.50, 2, ''Product1'', 'A', false);
Ik tel 5 argumenten (double, int, String, char, boolean). Bovendien is de volgorde anders dan bij de constructor.

Ik vermoed overigens dat het probleem is dat je twee single quotes probeert te gebruiken als double quote (dus 2 keer ' in plaats van ").

Berichten: 41

Re: Java

Ik heb inderdaad hier een fout gemaakt, dit is de code die ik als laatst gebruikt heb om de constructor aan te roepen.

Het was inderdaad niet de bedoeling om deze te plaatsen, maar ik realiseerde me dit pas nadat ik hem hier al geplaatst had.

Ik heb meerdere malen geprobeerd de constructor aan te roepen met vier argumenten voor de String, double, char & int, gezien dat niet lukte een eenmalige poging met een waarde voor Bewaarinkoelcel (ik werd wat wanhopig en hoopte het probleem te verhelpen hiermee, vraag me niet waarom).

Ook heb ik inderdaad met de volgorde zitten puzzelen, dit omdat als ik de volgorde van de constructor aanhield het tevens niet werkte.

Ook gebruik ik de juiste leestekens, dat weet ik zeker. 

de dubbele quotes zijn zeker gebruikt voor de String naam.

Heel erg bedankt voor je reactie tho! :)

Ik heb tevens mijn argument voor de String naam nog even bekeken, hij staat inderdaad tussen ".

Is er misschien iets anders aan de hand?

Gebruikersavatar
Berichten: 2.906

Re: Java

Als je in plaats van "Product1" een null waarde aan de constructor geeft, wat gebeurt er dan?
 
dus: 
 
Product product1 = new Product(null, 2.50, 'A', 2);
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Berichten: 41

Re: Java

Hee, dat werkt!

Mag ik vragen hoe dit komt?

Hartstikke bedankt anyway! :)

Gebruikersavatar
Berichten: 2.906

Re: Java

Blijkbaar was er toch iets mis met die String, waarschijnlijk toch die aanhalingstekens...
 
Heb je niet weer je toetsenbord in een verkeerde instelling staan?
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Berichten: 41

Re: Java

Ik voel me echt stom nu hahaha.

Dat betekent dat Evilbro toch gelijk had, ik was er echt heilig van overtuigd het " teken gebruikt te hebben maar zal dan denk ik toch in het proces 2 x los ' hebben getypt  :shock: 

 

Berichten: 41

Re: Java

Een van de opdrachten in het boek luidt;
''In de onderstaande tabel vind je de beschrijvingen van velden van klassen. Schrijf telkens de declaratie van het veld.''
 
''Declareer een veld dat bijhoudt of de lichten aan een spoorwegovergang rood of wit zijn.''

Nou hebben we in de cursus alleen nog maar met Strings, char, int, boolean & double gewerkt en met het schrijven van de constructor van de klasse, accessormethode en mutatormethode.

Ik vind het best moeilijk deze vraag momenteel te beantwoorden want als ik erover nadenk, lijkt het me dat ik iets met een if statement moet doen.

Een duwtje in de goede richting zou gewaardeerd worden! :)

Berichten: 41

Re: Java

boolean redlight = true;
 
if ( redlight == true) {
System.out.println("it's true");
}
else {
System.out.println("it's false");
}

Zou dit een eventuele oplossing zijn voor de bovenstaande vraagstelling?

Berichten: 12.262

Re: Java

Dat lijkt me wel, maar welke onderwijsmethode maakt het zo moeilijk dat een basaal if/else statement een probleem is voordat je gaat lopen klooien met classes, constructors en dergelijke?
 
Dat bedoel ik overigens niet lullig, het iets dat ik in de praktijk vaker zie: mensen die alles weten over object oriented programmeren, over classes, variable scopes en dergelijke, maar feitelijk nog moeite hebben om 20 regels procedurele code te schrijven. 
Victory through technology

Berichten: 41

Re: Java

Ik had zelf ook een hoop frustratie toen deze opdracht voorbij kwam, meer gezien het feit dat ik op pagina 20 zit momenteel en hiermee net het 2e hoofdstuk heb afgesloten.

In dit hoofdstuk hebben we eigenlijk geleerd om de basis van je klasse te kunnen programmeren maar het voelt echt alsof er een hoop mist, daar komt voornamelijk mijn frustratie vandaan. Dit was namelijk een van de 'herhalingsopdrachten'.

Dit boek is wel specifiek gericht op OOP en ik ben zo goed als bij de beginselen nog, dus hopelijk wordt hier later meer op in gegaan.

Ik kan me volledig inleven in je opmerking, want ik vind het momenteel zeer lastig om bij zo'n opdracht een code te vormen.

Fijn dat je me vraag beantwoord hebt, ik zat nog te twijfelen of ik misschien een accessormethode moest gebruiken i.p.v. het bovenstaande.

 

Reageer