Springen naar inhoud

Java


  • Log in om te kunnen reageren

#1

N00b

    N00b


  • 0 - 25 berichten
  • 8 berichten
  • Gebruiker

Geplaatst op 25 maart 2019 - 17:16

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!
 

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Math-E-Mad-X

    Math-E-Mad-X


  • >1k berichten
  • 2595 berichten
  • Ervaren gebruiker

Geplaatst op 25 maart 2019 - 17:34

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(); }

#3

N00b

    N00b


  • 0 - 25 berichten
  • 8 berichten
  • Gebruiker

Geplaatst op 25 maart 2019 - 17:48

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

Bijgevoegde miniaturen

  • Project BlueJ.png

#4

Math-E-Mad-X

    Math-E-Mad-X


  • >1k berichten
  • 2595 berichten
  • Ervaren gebruiker

Geplaatst op 25 maart 2019 - 20:14

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').

Veranderd door Math-E-Mad-X, 25 maart 2019 - 20:15

while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

#5

N00b

    N00b


  • 0 - 25 berichten
  • 8 berichten
  • Gebruiker

Geplaatst op 25 maart 2019 - 21:04

Ik heb het op de bovenstaande manier ingevuld maar krijg nu de volgende foutmelding;Project BlueJ.png

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!


#6

Math-E-Mad-X

    Math-E-Mad-X


  • >1k berichten
  • 2595 berichten
  • Ervaren gebruiker

Geplaatst op 25 maart 2019 - 21:20

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(); }

#7

N00b

    N00b


  • 0 - 25 berichten
  • 8 berichten
  • Gebruiker

Geplaatst op 25 maart 2019 - 21:36

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

Veranderd door N00b, 25 maart 2019 - 21:37


#8

Math-E-Mad-X

    Math-E-Mad-X


  • >1k berichten
  • 2595 berichten
  • Ervaren gebruiker

Geplaatst op 25 maart 2019 - 21:38

Ha! mooi! :D

 

Laat maar weten als je nog meer vragen hebt!

while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

#9

N00b

    N00b


  • 0 - 25 berichten
  • 8 berichten
  • Gebruiker

Geplaatst op 25 maart 2019 - 21:58

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.


#10

Benm

    Benm


  • >5k berichten
  • 11091 berichten
  • VIP

Geplaatst op 26 maart 2019 - 03:15

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

#11

N00b

    N00b


  • 0 - 25 berichten
  • 8 berichten
  • Gebruiker

Geplaatst op 10 april 2019 - 13:00

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!

#12

EvilBro

    EvilBro


  • >5k berichten
  • 6979 berichten
  • VIP

Geplaatst op 10 april 2019 - 13:22

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

#13

N00b

    N00b


  • 0 - 25 berichten
  • 8 berichten
  • Gebruiker

Geplaatst op 10 april 2019 - 13:25

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?


#14

EvilBro

    EvilBro


  • >5k berichten
  • 6979 berichten
  • VIP

Geplaatst op 10 april 2019 - 13:31

Het is mij niet helemaal duidelijk wat je zegt... helpt dit?
String mijnNaam = "Fiets";
char verwarrendeNaamgeving = '3';
Mail Mail1 = new Mail(mijnNaam, verwarrendeNaamgeving, "Een String");

#15

N00b

    N00b


  • 0 - 25 berichten
  • 8 berichten
  • Gebruiker

Geplaatst op 10 april 2019 - 14:00

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! :)






0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures