Java

Moderators: jkien, Xilvo

Berichten: 41

Java

Momenteel begin ik net met mijn eerste cursus Java, alleen loop ik bij een oefening tegen een probleem aan.

Ik moet een instantie aanmaken van een klasse waarvan de code al geschreven is, hierbij wordt gevraagd om de naam van het object. Alleen wat ik ook invoer, ik blijf de foutmelding krijgen dat het geen geldige parameter is. Klassendefinitie hieronder;

 
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;
    }
 
 
    public String getNaam()
    {
        return naam;
    
    
    }
 
    
    public int getAantal()
    {
        return aantal;
    }
        
 
    public void setPrijs(double prijs)
    {
        this.prijs = prijs;
    }
    
 
    public void setBewaarInKoelcel(boolean bewaarInKoelcel)
    {
        this.bewaarInKoelcel = bewaarInKoelcel;
    }
    
 
    public double berekenPrijsBTW(int aantal, double btwTarief)
    {
        return (aantal * prijs * (1 + btwTarief));
    }
    
 
    public double berekenNettoVoorraadWaarde()
    {
        return aantal * prijs;
    }
    
  
    }

Ik voel me echt een broekie, vandaar mijn naam. 

Maar in de cursus wordt er nou niet verder op in gegaan hoe je bij deze opdracht een instantie aanmaakt van de klasse Product.

Bij voorbaat dank!
 

Gebruikersavatar
Berichten: 2.906

Re: Java

Geef de code die je zelf geschreven hebt er ook eens bij (anders kunnen we natuurlijk niet zeggen wat je fout doet).
 
En geef ook de foutmelding er bij.
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Berichten: 41

Re: Java

Ah sorry, ik ben misschien wat dingen vergeten te vermelden hierbij.

De cursus heeft BlueJ als IDE gekozen.

Hierin is de klasse dus al gedefinieerd.

Ik kan in BlueJ met een klik op de klasse een instantie hiervan aanmaken, hierna wordt er om bepaalde waarden gevraagd.

Als ik het object een naam wil geven hier, krijg ik de foutmelding: ''Error - cannot find symbol - parameter x''

Ik voeg een screenshot bij om het te verduidelijken.

De bovenstaande code is momenteel het enige stukje code wat ik nog bij het project heb verder, tevens is dit pas de tweede oefening van de cursus. Dus heel ervaren ben ik verder niet. 

De specifieke oefening verwees naar dit project en vroeg alleen een object aan te maken, zonder verdere verduidelijking helaas.

Thanks voor je reactie!

 

Hier het screenshot
Bijlagen
Project BlueJ.png
Project BlueJ.png (107.47 KiB) 3758 keer bekeken

Gebruikersavatar
Berichten: 2.906

Re: Java

Ah, okay, ik heb geen verstand van BlueJ, maar ik denk dat het probleem is dat je de a tussen aanhalingstekens moet zetten.
 
Zonder aanhalingstekens denkt hij namelijk dat je een variabele met de naam a ingeeft, maar die variabele bestaat niet, vandaar de foutmelding.
 
Met aanhalingstekens begrijpt hij dat je de String "a" wil ingeven.
 
Let wel op dat het dubbele aanhalingstekens moeten zijn. Het derde argument moet namelijk een char zijn, dus die moet juist tussen enkele aanhalingstekens staan (bijv. 'A').
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Berichten: 41

Re: Java

Ik heb het op de bovenstaande manier ingevuld maar krijg nu de volgende foutmelding;
Project BlueJ.png
Project BlueJ.png (95.21 KiB) 3767 keer bekeken
In de opdracht wordt niks verduidelijkt over het feit of er nou wel of niet code bijgeschreven zou moeten worden, kan het niet zo zijn dat ik eventueel zelf wat moet toevoegen?

Anyways hartstikke bedankt voor je hulp!

Gebruikersavatar
Berichten: 2.906

Re: Java

Hmmm... vreemd... het plaatje ziet er goed uit, maar misschien heb je toch niet helemaal de juiste aanhalingstekens gebruikt voor het eerste argument.
 
Als het goed is heeft je toetsenbord een knop met een enkel aanhalingsteken, en een andere knop met een dubbel aanhalingsteken (ik gebruik zelf een Spaans toetsenbord, dus ik weet niet welke knoppen dat zijn op een Nederlands toetsenbord). Je moet de knop met de dubbele aanhalingstekens gebruiken.
 
Als je een dubbel aanhalingsteken wil typen moet je dus niet twee keer de knop met het enkele aanhalingsteken gebruiken.
 
Lost dat het probleem op?
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Berichten: 41

Re: Java

Nee, helaas niet. Deze gebruik ik al :(

Ik neem terug wat ik net zei.

Mijn toetsenbord staat op US ingesteld, ik moest ''shift + dubbele aanhalingstekens'' gebruiken om de dubbele aanhalingstekens die u beschreef te krijgen!

Mijn dank is groot! :D

Gebruikersavatar
Berichten: 2.906

Re: Java

Ha! mooi! :D
 
Laat maar weten als je nog meer vragen hebt!
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Berichten: 41

Re: Java

Nou, er schiet me wel iets te binnen.

Ik werk momenteel uit het boek ''leren programmeren'' van Dominiek Van De Walle, maar zocht nog wat aanvulling hierop. Het boek gaat niet heel erg diep in op de theorie. Hoewel de opdrachten op zich een leuke manier zijn om het te leren!

Wat an sich weer jammer is. Hierdoor weet ik bijvoorbeeld nog steeds niet precies wat de functie van " is, behalve dat het aangeeft dat het geen variabele is.

Berichten: 12.262

Re: Java

Er kan een enorm verschil zijn tussen gedrag tussen enkele quotes en dubbele. 
 
Neem iets als dit:
 
$a = 10
echo "ik probeer dit al $a keer"
versus
echo 'ik probeer dit al $a keer'
 
Bij de P-talen geeft de eerste optie wat je ongeveer wil doen, terwijl de tweede er gewoon $a laat staan terwijl je eigenlijk de waarde van $a, in dit geval 10, wilde hebben.
 
Uiteraard is er wel een optie die het duidelijker maakt, iets als
 
echo 'ik probeerde dit al ' . $a . ' keer';
 
Dat voorbeeld werkt prima met zowel dubbele als enkele quote marks... al is het wel een tikje langzamer met dubbele quotes. 
Victory through technology

Berichten: 41

Re: Java

Ik probeer een object aan te maken in BlueJ met de code: Mail Mail1 = new Mail();

En krijg hier de foutmelding: Error: constructor Mail in class Mail cannot be applied to given types;
                                              required: java.lang.String,char,java.lang.String
                                              found: no arguments
                                              reason: actual and formal argument lists differ in length

Dit is wat ik momenteel als code hebt staan (er is in de cursus nog niet dieper ingegaan op de header schrijven):
 

public class Mail
{
    private String Naam; //afzender
    private char aantal; //hoeveelheid
    private String postvak; //Postvak in, postvak uit, spam
    
    public Mail(String Naam, char aantal, String postvak) //Constructor
    {
        this.Naam = Naam;
        this.aantal = aantal;
        this.postvak = postvak;
    }
}

Ik heb geprobeerd de variabelen te declareren tussen de haakjes, maar krijg dan de volgende foutmelding: Error: cannot find symbol -   variable Naam

Met het volgende stukje code: Mail Mail1 = new Mail(Naam, 1, postvakin);

Ik heb ondertussen al zoveel methodes geprobeerd maar het blijft neerkomen op dezelfde foutmeldingen en ik krijg persoonlijk het gevoel dat ik een fout gemaakt heb in of de header die ik geschreven heb of de manier waarop ik de constructor aanroep.

Bij voorbaat dank!

Berichten: 7.068

Re: Java

Probeer eens:

Code: Selecteer alles

Mail Mail1 = new Mail("Fiets", '5', "Kantine");

Berichten: 41

Re: Java

Potver hahaha, ik zie nu gelijk al wat ik fout deed.

Hartstikke bedankt, ik ga het gelijk proberen!

Het maakt dus niet uit wat je wilt declareren qua variabelen of waar, je moet altijd de bijbehorende leestekens gebruiken als ik het goed begrijp?

Berichten: 7.068

Re: Java

Het is mij niet helemaal duidelijk wat je zegt... helpt dit?

Code: Selecteer alles

String mijnNaam = "Fiets";
char verwarrendeNaamgeving = '3';
Mail Mail1 = new Mail(mijnNaam, verwarrendeNaamgeving, "Een String");

Berichten: 41

Re: Java

Juist die leestekens was ik vergeten in het stukje code wat ik eerder postte. Daar doelde ik op, ik was me totaal niet bewust van het feit dat ik natuurlijk voor de Strings een dubbele quote en voor de Char een enkele moest gebruiken.

Hoewel ik dit wel eerder gedaan heb in het schrijven van de header van de klasse, was ik dit totaal vergeten bij het maken van de instantie van de klasse Mail.

Je hebt me perfect uit de brand geholpen! :)

Reageer