Methode, welche die 3 letzten Parameter Werte speichert

Jambolo

Mitglied
Moin,

Ich muss eine Methode schreiben, welche sich die 3 letzten Parameterwerte merkt, leider weiß ich nur nicht wie ich das mache....
Die Methode muss aber ein void haben und arrays darf ich nicht benutzen

Dazu muss ich noch eine Methode schreiben, welche die 3 letzten Werte dann in der Konsole ausgibt.

Kann mir jemanden helfen wie ich die letzten 3 Parameterwerte mit einer Methode "merken" kann?

MfG
 
heißt das du willst eine methode die beliebig viele parameter annimmt und die letzten 3 ausgibt?

oder eine methode die 5 parameter hat und da sollen die letzten 3 ausgegeben werden
ich weis grad nicht was für eine form du willst
 
ich würde da mal ne klasse machen, die ein array hat wo 3 werte rein passen

dem array fügst du bei jedem aufruf den aufruf wert hinzu
du musst halt aufpassen sobald das array voll ist dann musst du verschieben

zb
Java:
[ 0 , 0 , 0 ]
10 => [ 10 , 0 , 0 ]
20 => [ 10 , 20 , 0]
30 => [ 10 , 20 ,30 ]
    
    jetz der schwere fall FALLS voll ist
    
40 => ?
1. erste zahl fällt weg
[ 0 , 20 , 30 ]
2. die array zahlen nach links verschieben
[ 20 , 30 , 0]
3. wieder wie oben hinzufügen ist ja wieder platz
[ 20 , 30 , 40 ]
 
ich weiß net mal was eine queue ist. ich darf nur die standard sachen benutzen wie schleifen oder so
z.B
public void printLetzenDrei(){
>>> printed die letzten 3 werte <<<
}

public void neuerWert(int wert){
>>> der code der die werte speichert <<<
}

verstehst du?
 
ja ich versteh dein problem

nur du musst es zwischen speichern ,eine queue ist ansich eine warte schlange
wer als erstes kommt fliegt als erstes raus und wer neu kommt stellt sich hinten an

 
ja ich versteh dein problem

nur du musst es zwischen speichern ,eine queue ist ansich eine warte schlange
wer als erstes kommt fliegt als erstes raus und wer neu kommt stellt sich hinten an

Genau das soll eben nicht passieren, wer neu kommt soll nach vorne und wer älter als dritte reihe ist soll raus, ich bin blutiger studentenanfänger und habe keine ahnung was da bei queue passiert, wir dürfen sowas auch nicht benutzen wenn das kein vorlesungstoff ist bro
 
also queue kannst du dir so vorstellen

pfeilchen bedeutet einen eintrag in der queue

und jetzt hast du eine leere warte schlange
und die "queue" bezieht sich wirklich auf warte schlange.. im übertragenen sinne
zb du bist eisverkäufer
=> bob => katrin => toast
dh vor deinem eis verkäufer steht jetzt bob, dann katrin , dann der toast

wenn du dem bob sein eis gibst geht der aus der warte schlange raus dann schaut die schlange so aus
=> katrin => toast

das mal zur theorie... jetzt mal dein beispiel mit den zahlen 1 2 3 4

du hast ne leere schlange wieder mal
jetzt kommt 1
dann kommt der 2 dazu
dann kommt 3 dazu
jetzt kommt der 4rer ... soooooooooo wer fällt jetzt raus ? die "letzten 3 zahlen" wären ja jetzt 2 3 4
dh der erste eintrag fällt raus wie der bob dh
du kickst die 1
und fügst den 4er hinzu
 
die methode um den ersten in der schlange raus zu kciken ist
schlangenobjekt.remove()
hinzufügen von objekten geht mit add wie im link beschrieben

das out println über nimmt die schlange selber ( zumindest fürn anfang langts ) da sie die to string methode überschrieben hast dh
System.out.println(schlangenobjekt);
liefert die einzelnen elemente ausgeprintelt
 
Ich darf leider keine Arrays benutzen, habe das oben angegeben gehabt
Wie wäre es stattdessen mit drei einzelnen Variablen?

Sobald ein neuer Wert übergeben wird, musst du entsprechend umkopieren.

Das ist nicht super smart, aber es geht hier offensichtlich um eine Anfängeraufgabe, darum solltest du dich auch nicht mit den zwar besser passenden Möglichkeiten (wie List, Queue, usw.) aufhalten, die du ja noch gar nicht kennst und darum auch nicht verwenden willst.
 
Java:
public class LastThree {
    
    int merkeZahl1,merkeZahl2,merkeZahl3;

    public LastThree(){
        
    }
    
 
    public void printLastThree(){
        System.out.printf("%d~%d~%d~%n", merkeZahl1, merkeZahl2, merkeZahl3);

    }

    public void processNewValue( int value ){
        merkeZahl1 = value;
        merkeZahl2 = value -1;
        merkeZahl3 = value -2;
        
    }
}
ich habe das so gemacht, aber der macht nicht das was ich will. wenn ich z.B die Methode einmal mit 20 aufrufe und dann mit 21, dann soll er nur 20 21 ausgeben. der code den ich habe macht das leider nicht. könntest du mir im form von code vllt helfen?
 
Du ziehst von dem übergebenen Wert 1 ab und speicherst ihn anschließend. Das ist es ja nicht was du willst. Du möchtest die Werte kopieren, also den einen Wert einem anderen Wert zuweisen.

Überleg doch mal ohne zu Programmieren, wie du das lösen kannst. Stell dir vor du hast drei Gläser. Jetzt bekommst du z. B. eine Haselnuss und sollst sie in den Gläsern ablegen . Es sollen immer die letzten drei, dir übergebenen Nüsse, in den drei Gläsern aufbewahrt sein. Was musst du mit der Nuss machen, die schon im Glas ist, bevor du die neue Nuss hineinlegen kannst?

Sorry, was besseres ist mir grad nicht eingefallen. 😉
 
Zuletzt bearbeitet:
Ich muss die alte Nuss rausnehmen und wo anders rein legen, damit ich die neue Nuss ins Glas reinlegen kann. Das heißt der Wert der in der Variable ist muss raus und zwischengespeichert werden, damit der neue Wert reingelegt werden kann. Am ende müssen die letzten 3 Nüsse ausgegeben werden

Ich denke mal ich brauche jetzt eine Schleife die das macht.
 
Dann erstelle doch eine Hilfsvariable in der Methode. Zum tauschen.

Schleife ja kann man machen.
Ob sich das bei zwei mal tauschen lohnt. Könnte man auch gleich hintereinander schreiben.

Zum ausgeben auf die Konsole prüfe ob in allen oder der letzten Variablen ein Inhalt ist.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben