Schoolopdracht Blue J

Status
Niet open voor verdere reacties.

MargotB

Nieuwe gebruiker
Lid geworden
20 jun 2010
Berichten
4
Hallo,

Ik moet voor informatica een aantal opdrachten maken met blue j, maar ik loop een beetje vast.
De bedoeling is om een soort winkel te maken.
Ik heb drie klassen: Catalogus, Artikel en Bestelling.
In de klasse bestelling moeten uiteindelijk ook alle prijzen bij elkaar opgeteld worden. Dit lukt mij niet.
Dit is de code die ik heb voor de klasse bestelling:
Code:
import java.util.*;

public class Bestelling {
    private ArrayList<Artikel> lijst;
    
    public Bestelling() {
        lijst = new ArrayList<Artikel>();
    }
    
    public void voegtoe( Artikel artikel ) {
        lijst.add( artikel );
    }
  
    public double berekenTotaal( double prijs ) {
        double subtotaal = 0;
           subtotaal = subtotaal + prijs ;
        }
  
    public void printFactuur() {
      for( Artikel artikel : lijst ) {
        System.out.printf( "%6d%4s%-40s%6.2f%n%", artikel.getNummer()," " , artikel.getOmschrijving(), artikel.getPrijs() );
      }
    } 
}

De methode berekenTotaal is dus de methode die de prijzen bij elkaar moet optellen, alleen ik weet niet hoe ik dat precies moet doen.
Nu geeft hij namelijk het error: missing return statement.

Ik hoop dat jullie me kunnen helpen!

Voor de zekerheid, ik weet niet of jullie dat nodig hebben, maar dit is de brondcode van de klasse artikel:
Code:
public class Artikel {
  private int nummer;
  private String omschrijving;
  private double prijs;

  public Artikel( int nummer,
                  String omschrijving, 
                  double prijs ) {
    this.nummer = nummer;
    this.omschrijving = omschrijving;
    this.prijs = prijs;
  }

  public int getNummer() {
    return nummer;
  }

  public String getOmschrijving() {
    return omschrijving;
  }

  public double getPrijs() {
    return prijs;
  }

  public String toString() {
    return nummer + ", " + omschrijving + ", " + prijs;
  }
}

Alvast bedankt!
 
De foutmelding return statement staat er niet voor niks, die moet je dan ook even toevoegen. dus:
Code:
subtotaal = subtotaal + "iets";
moet worden
Code:
return subtotaal + "iets";
 
o, natuurlijk!
heel erg bedankt!

ik had nog een vraagje (sorry...) want het is de bedoeling dat hij uiteindelijk de prijzen van de toegevoegde artikelen (dus uit de klasse artikel uiteindelijk) bij elkaar optelt.
Zoals ik het nu heb klopt het dus niet, want nu moet je zelf de prijs invoeren.
Maar hoe kan ik zo verwijzen naar de prijs dat hij weet welke prijzen hij op moet tellen?
Ik dacht dat ik een for-statement moest gebruiken, maar ik kom er niet uit wat ik er dan in moet zetten...
 
sorry, dat begrijp ik niet helemaal. Wat is de bedoeling dat er gebeurt? En wat gebeurt er nu dat niet de bedoeling is?:confused:
 
Nou, kijk, de klasse bestelling is een klasse waar je artikelen (uit de klasse catalogus) aan kan toevoegen.
Met de methoden berekenTotaal moet dan het totaal van de artikelen berekend worden, door dus de prijzen van die artikelen op te tellen.
Maar als ik nu die methode aanroep, moet ik zelf een prijs opgeven, en dat is natuurlijk niet de bedoeling.
Ik zoek nu dus naar een manier om de prijzen van de artikelen die toegevoegd zijn aan de bestelling "op te vragen" en bij elkaar op te tellen.

Hopelijk begrijp je het nu wat beter..
 
Niet echt dus:o De opzet van je programma is (als ik het goed begrepen heb) dat er een vast aantal artikelen is met een vaste prijs waaruit je kan kiezen en dat de prijs van de gekozen producten bij elkaar wordt opgeteld?
 
Ja, klopt, dat is de bedoeling.
En dat moet dus gebeuren met de methode berekenTotaal.

En het probleem dat ik nu heb is dat ik daarvoor dus de prijzen van de artikelen nodig heb (die staan in een andere klasse) en ik niet echt weet hoe ik die moet krijgen.
 
je zou ze kunnen opslaan in een array, net als de producten zodat je dus twee arrays krijgt, waarbij nummer 1 van de array met de producten bijvoorbeeld het product ijsje bevat, en dat nummer 1 uit de array met prijzen de waarde 1 euro bevat, de prijs van je ijsje:d
 
Als ik correct ben heb je:
1) een class Catalogus waar niet veel meer in moet staat dan een lijst met alle beschikbare artikels en een methode om een specifiek artikel op te vragen aan de hand van zijn id.

2) een class Bestelling die uit die catalogus specifieke artikels gaat halen en toevoegen aan zijn lijst met bestelde artikels en een methode om het totaal te berekenen

3) een class Artikel met zijn unieke id, naam en prijs

Het probleem dat je waarschijnlijk hebt is dat je niet weet hoe je de artikels uit de Catalogus kunt krijgen...

Wel je hebt een methode nodig die een artikel kan opvragen en toevoegen in Bestelling

Code:
public void haalOpEnVoegToe(int id) {
 voegToe(catalogus.haalArtikelmetId(id));
}

Het echte probleem is nu, hoe zorg ik er voor dat Bestelling Catalogus kent?
2 oplossingen (zonder extra classes):

Je maakt de ArrayList catalogus (in Catalogus) en de methode haalArtikelmetId(int id) static
en dan doe je
Code:
public void haalOpEnVoegToe(int id) {
 voegToe(Catalogus.haalArtikelmetId(id));
}

of je zorgt bij het aanmaken van de bestelling dat die de catalogus kent door deze mee te geven met de constructor

in je main:
Code:
Catalogus catalogus = new Catalogus();
//catalogus heeft een ArrayList met artikels...
new Bestelling(catalogus);

in Bestelling:
Code:
Catalogus catalog;

public Bestelling(Catalogus catalogus) {
  this.catalog = catalogus;
}
public void haalOpEnVoegToe(int id) {
 voegToe(catalog.haalArtikelmetId(id));
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan