0 Daumen
651 Aufrufe

Frage:

Ich soll weitere Ideen sammeln, für die Erwiterung des Funktionsumfages der Software und diese Methode Implementieren, welche die Rangliste oder die Warteliste manipuliert oder einfcah darauf zugreift.

Ich verzweifle! Ich hatte an die Methode z.B gedacht: austrittSpieler, also wenn ein Spieler dem Golfclub austreten möchte, doch die ist schon indirekt implementiert, da die Warteliste.., bereits einen Spieler entfernen kann.. egal welche Ideen ich habe, keiner passt.


Code:

public class Spielerrangliste{
private List<Spieler> rangliste;
private Queue<Spieler> anwaerter;

public Spielerrangliste(){
rangliste = new List<>();
anwaerter = new Queue<>(); 
dummySpielerEinfuegen();
}

public void dummySpielerEinfuegen(){
Spieler s1 = new Spieler("Fuerstin Pueckler",200);
Spieler s2 = new Spieler("General Wolfenstein",250);
Spieler s3 = new Spieler("Prof. Dr. Schlunz",600);
rangliste.append(s1);// Ranglste hängt S1 an
rangliste.append(s2);// ""S2
rangliste.append(s3);//""S3
Spieler s4 = new Spieler("Norbert Neumann", 700);
anwaerter.enqueue(s4); 
Spieler s5 = new Spieler("Natascha Nocheine", 750);
anwaerter.enqueue(s5);
}
public void neuerAnwaerter(String pName, int pHandicap){

  Spieler neuerSpieler = new Spieler(pName, pHandicap);
  anwaerter.enqueue(neuerSpieler);

}

public void zurRanglisteHinzufuegen()
{
  if(!anwaerter.isEmpty()){//mind. 1 Anwaerter muss vorhanden sein
  Spieler neuerSpieler = anwaerter.front();// zwischengespeichert
  anwaerter.dequeue();// anwaerter gelöscht-von Waeteliste entfernt
  rangliste.append(neuerSpieler);

}
}

public String listeToString(){
rangliste.toFirst();
String ergebnis = "";
while (rangliste.hasAccess()) {
  Spieler aktSpieler = rangliste.getContent();
  ergebnis = ergebnis + aktSpieler.getName() + " : " + aktSpieler.getHandicap() + "\n";
  rangliste.next();
}
return ergebnis;
}
public String anwaerterToString(){
Queue<Spieler> temp = new Queue<>();//neue Warteliste
String ergebnis="";
while (!anwaerter.isEmpty()) {//nicht leer  
  Spieler aktSpieler = anwaerter.front();//Zwischengespeichert
  temp.enqueue(aktSpieler);//der neuen Liste hinzugefügt
  anwaerter.dequeue();//anwaerter gelöscht-entfernt
  ergebnis = ergebnis + aktSpieler.getName() + "\n";   
}
anwaerter = temp;
return ergebnis;
}

public void spielerEntfernen(String pName){
  rangliste.toFirst();
  Spieler aktSpieler;
  while (rangliste.hasAccess()){
      aktSpieler = rangliste.getContent();
   
      if (aktSpieler.getName().equals(pName)){
       
          rangliste.remove();
          return;
        }
        rangliste.next();
    }
}

public void handicapAendern(String pSpieler, int pNeuesHandicap){
    rangliste.toFirst();
    Spieler aktSpieler;
 
    while (rangliste.hasAccess()){
        aktSpieler= rangliste.getContent();
        aktSpieler.setHandicap(pNeuesHandicap);
        return;
    }
    //anwaerter = temp;
    //return ergebnis;
}

public void sortieren(){
List neueListe = new List();
Spieler aktSpieler ;
Spieler besterSpieler;
while (!rangliste.isEmpty()){
    rangliste.toFirst();
    besterSpieler = rangliste.getContent();
    rangliste.next();
    while (rangliste.hasAccess()){
        aktSpieler = rangliste.getContent();
        if (besterSpieler.getHandicap() > aktSpieler.getHandicap()){
        besterSpieler = aktSpieler;
        }
rangliste.next();
}
neueListe.append(besterSpieler);
rangliste.toFirst();
while(rangliste.getContent() != besterSpieler){
  rangliste.next();
}
rangliste.remove();
}
rangliste = neueListe;
}
}


public class Spieler{
private String name;
private int handicap;

public Spieler(String pName, int pHandicap){
name = pName;
handicap = pHandicap;
}
public void setHandicap(int pHandicap){
handicap = pHandicap;
}
public int getHandicap(){
return handicap;
}
public String getName(){
return name;
}
public void setName(String pName){
name = pName;
}
}
Avatar von

1 Antwort

0 Daumen

Spotan würde mir das zurücksetzen aller Handicaps der Rangliste einfallen

Avatar von

Coole Idee, danke ;)


Aber müsste .an da nicht einfach nur eine neue Liste erstellen?



Haben Sie noch eine Idee:)

Wenn du die Spieler behalten willst, musst du nicht nur eine neue Liste erstellen.

Vielleicht die durchschnittliche Punktzahl berechnen?

Oh cool ,danke.


Wie müsste ich das machen, also die Zurücksetzung?


Also, ich hätte einfach eine neue Liste erstellt.


Mit einer Schleife, durchlaufen oder Anfrage kann ich ja die handicaps nicht zurücksetzen.


Hätten sie eventuell Lösungsansätze?


Vielen Dank

Ich sehe nicht, was dagegen spricht, mit einer Schleife durchzulaufen und per SetHandicap, alle Handicaps jeweils auf 0 zu setzen

Stimmt, sehr einleuchtend. Vielen Dank.

(Ich bin ein ziemlich komplizierter Denker, aber kein logischer. Deshalb dauert es etwas bei mir ,bis es klick macht,danke )

Ich habe es echt lang versucht aber ich schaffe es einfach nicht zu programmieren wie ich es mir vorstelle. könnten Sie mir bitte dabei helfen.


Ich weiß, dass ich eine schleife erzeugen muss,welche die Rangliste durchläuft, solang diese handicap hat,welche größer als 0 sind.

Anschließend sollen die Werte auf null gesetzt werden.


Ich habe es so gemacht:


While( pHandicap >0)

{

pHandicap hp= new handicap;

hp = 0

return;

}


Man könnte es , denke ich, auch mit redet machen.


Ich verzweifel!!

HILFE


ich Danke Ihnen.

Du kannst direkt die ganze Liste durchlaufen, ohne zu wissen, wie das Handicap aussieht und einfach alle Handicaps dann jeweils auf 0  setzen.

Betrachte bitte meinen letzten Kommentar aus deiner anderen Frage:
https://www.stacklounge.de/6226/methode-zu-umbenennen-implementieren-ist-das-so-richtig#c6235

Da ist sowohl das Prinzip beschrieben,wie du durch eine Liste läufst(machst du z.B.auch in deiner listeToString-Methode als auch, dass es sinnvoll ist, dafür zu sorgen, in irgendeiner Programmierumgebung zu implementieren, bei der du Rückmeldungen des Compilers bekommst, wenn du den Code ausführst, über das, was nicht stimmt.

Solltest du das nicht machen, halte ich es nicht für zielführend hier weiterhin Hilfestellung gegeben, da hier zu massiv Grundlagen fehlen, die ich nicht mal eben ausgleichen kann.

Danke!

Ich habe es schon allein geschafft

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community