Wo ist der Fehler im Programm?

SugarRay

Mitglied
Hallo

Ich bekomme folgende Fehlermeldung:
28thume.jpg



Hier das Programm:
SQL:
public class Aufgabe4
{
	public static void main (String [] args)
	{
	Kaffeeautomat automat = new Kaffeeautomat ();
	
	double rueckgeld;
	
	automat.einwurf(2);
	rueckgeld = automat.auswahl(2);
	
	System.out.print(" Das Wechselgeld betraegt: " + rueckgeld);
	
	}
}


class Kaffeeautomat
{
	private double einnahmen, guthaben;
	private int [] vorrat;
	private double [] preis;
	
	public Kaffeeautomat()
	{
	preis[0] = 0.8 ; preis[1] = 1.2 ; preis[2] = 1.0 ;
	vorrat[0] = 100 ; vorrat[1] = 100 ; vorrat[2] = 100 ; 
	einnahmen = 0 ; guthaben = 0 ;
	}
	
	public void einwurf(double wert)
	{
	if(wert == 0.1 || wert == 0.2 || wert == 0.5 || wert == 1.0 || wert == 2.0)
	{
	guthaben = guthaben + wert;
	System.out.print("Guthaben: " + guthaben);
	}
	else
	{
	System.out.print("Falschgeld");
	}
	}
	
	public double auswahl(int sorte)
	{
	double wechselgeld = 0;
	
	if(sorte < 0 || sorte > 3)
	{
	System.out.print("Falsche Sorte");
	return wechselgeld;
	}
	
	else if(vorrat[sorte] == 0)
	{
	System.out.print("Leer");
	return wechselgeld;
	}
	
	else if(guthaben < preis[sorte])
	{
	System.out.print("Zu wenig Guthaben");
	return wechselgeld;
	}
	
	else
	{
	vorrat[sorte] = vorrat[sorte] - 1;
	einnahmen = einnahmen + preis[sorte];
	System.out.print("Es wurde Sorte " + sorte + " gewaehlt!");
	wechselgeld = guthaben - preis[sorte];
	guthaben = 0;
	return wechselgeld;
	}
	}
}

Wo hat sich der Fehler versteckt?

Danke
 
Java:
private int [] vorrat;
Damit erstellst du aber noch kein Array, du legst nur ne Variable dafür an.
Code:
vorrat
ist damit im Konstruktor noch null.
 
SQL:
private double einnahmen, guthaben;
	private int [] vorrat = new int [3];
	private double [] preis = new double [3];
	
	public Kaffeeautomat()
	{
	preis[0] = 0.8 ; preis[1] = 1.2 ; preis[2] = 1.0 ;
	vorrat[0] = 100 ; vorrat[1] = 100 ; vorrat[2] = 100 ; 
	einnahmen = 0 ; guthaben = 0 ;

so geht´s. meinst du das?
 
Jap, so sieht es besser aus. Für Java Code gibt es unter anderem extra Tags, der 2. Button neben dem SQL Button, den du immer verwendest 🙂

Außerdem sollten
Java:
return;

if(){}

klein geschrieben werden. Zumindest in dem Code, den du oben gepostet hast, ist dies groß geschrieben und würde somit einen Compiler Fehler ergeben.
 
Besser - weil bzgl. der Dimensionen des Arrays - weniger redundant - wäre
Java:
private double einnahmen, guthaben;
    private int [] vorrat;
    private double [] preis;
    
    public Kaffeeautomat() {
      preis = new double[]{0.8, 1.2, 1.0};
      vorrat = new int[]{100,100,10} ; 
      einnahmen = 0;  
      guthaben = 0 ;
    }
}
 
Und was soll das bitte schön für ne Syntax sein?.. Zeig mir mal nen Code der so aussieht ohne Syntax error. Wenn überhaupt müsste davor noch en double aber dann würde es nicht die Membervariable ändern sondern eine neue Variable erstellen....

mh hast natürlich recht. Weiß nicht was ich mir dabei gedacht habe. Am besten es löscht ein Admin, damit den Schmarn nicht noch jemand liest 😳
 

Neue Themen


Zurück
Oben