JAVA Klassenmethoden- Methoden aufrufen und neue Werte abspeichern. Aber wie?

2 Antworten

Wozu brauchst du in deiner biete Funktion eine Schleife? Du hast keinen Iterable Datentyp wie z.B. eine Liste oder Array.

In deiner Artikel Klasse hast du die Variable Preis welche entweder den Startpreis oder den Preis des hochsbietenden darstellt. Das ist ein Wert, der immer überschrieben wird.

Die Variable Gebote stellt die Anzahl der Gebote dar. Es ist keine Liste, wo alle bisherigen Gebote gespeichert werden.

In deinem Code gibt es zwei Fehler.

Zum Einen musst du die while Schleife komplett entfernen. Du brauchst die Schleife nicht.

Bei deinem zweiten if hast du ein Syntax Fehler. Alle Klammern werden nicht korrekt geschlossen.

Ich sehe manche Dinge, die entweder zu viel sind und ebenfalls noch den/die Fehler.

public class Artikel {
	public String name; //Beschreibung des Artikels 
	public int preis = 0; // enthält erst das Mindestangebot und später das Höchstgebot 
	public int gebote = 0; 
	
	public Artikel(String name, int preis) {
		this.name = name;
		this.preis = preis;
	} 
	
    public void biete(int gebot) {
    	if (gebot>=preis) {
               preis = angebot;
              gebote++;
	    }
    }
}
  
  // == ist zum Vergleichen; = ist zum Setzen von Variablen
  

Die Schleife ist irrelevant, da ja immer nur 1 Angebot pro Funktionsaufruf evaluiert werden muss. Prinzipiell musst du ja nur schauen, ob das Gebot größer als der Preis ist; du musst also nicht erst überprüfen, ob gebote größer als 0 ist, da das ja nur zählen soll und nicht für die Evaluierung notwendig ist.

Wenn ich die Aufgabe richtig verstanden habe.

Woher ich das weiß:Hobby

newinformatik 
Fragesteller
 03.12.2022, 16:39

lieben Dank! :) bist der Beste/die Beste!! :)

1
newinformatik 
Fragesteller
 03.12.2022, 16:41
@Kalkablagerung

ja habe es nun verstanden und meine code auch verändert entsprechend angepasst :P

Folgendermassen hat es perfekt geklappt:

	public void biete(int gebot) {
	  // TODO: Methode implementieren
	  
	  if ((gebote<=0 && gebot>=preis) || (gebote>0 && gebot>preis)){ // sollte richtig sein 
            preis=gebot;
            gebote++;
	      }
    } 
    }

1
Kalkablagerung  03.12.2022, 16:46
@newinformatik

Sehr gut. Da gebote nicht kleiner als 0 werden kann, könntest du auch gebote==0 schreiben, statt gebote<=0, aber es ist kein Fehler!

1