Wie Programmiere ich eine Arztpraxis Simulation in BlueJ?

4 Antworten

In dem (nicht konventions-gerechtem) UML-Diagramm steht PATIENT[] schlange. (Ebenso wenig werden hier Java-Konventionen eingehalten)

Das PATIENT[] deutet auf ein Array hin, das 30 groß sein soll.

public class Warteschlange
{
   private Patient[] schlange;

   public Warteschlange()
   {
      this.schlange = new Patient[30];
   }
   
   // ...
}

So in etwa könnte es aussehen.
Mit den weiteren geforderten Methoden ist dann die Verwaltung dieser Warteschlange abgeschlossen.

Eine Schleife ist nötig bei der Methode informationAusgeben().
Und ggf. beim Entfernen(), falls gefordert, dass das Array immer um ein "aufrutschen" soll.

Kleine Anmerkung zu deiner Patient-Klasse:
Dein Konstruktor ist etwas merkwürdig von der Funktion her. Vielleicht solltest du dir das nochmal anschauen und überlegen, was daran geändert werden muss, damit das Programm ordnungsgemäß Funktioniert.

Ihr verstoßt ja gegen die Java Conventions ... Klassen schreibt man nicht durchweg groß, nur Konstanten. Hier meine Vorschläge:

// Patient.java

public class Patient {

  private String name;

  public Patient(String name) {
    this.name = name;
  }

  public void informationAusgeben() {
    System.out.println(name);
  }

}



// Warteschlange.java

public class Warteschlage {

  private Patient[] schlange = new Patient[30];
  private int laenge = 0;

  public Warteschlange() {
    // Konstruktor
  }

  public void einfuegen(Patient p) {
    if (schlange.length > laenge) {    
      schlange[laenge] = p;
      laenge++;
    }
  }

  public Patient entfernen() {
    laenge--;
    Patient p = schlange[laenge];
    schlange[laenge] = null;

    // Ist das richtig so?
    // Soll der entfernte Patient zurückgegeben werden?
    return p;
  }

  void InformationAusgeben() {
    // Auch hier unklar. So?
    for (Patient p : schlange) {
      p.informationAusgeben;
    }
  }

}

Ihr verstoßt ja gegen die Java Conventions...

Und du verstößt gegen die "Warteschlangen Conventions"... ;)

Warteschlangen arbeiten nach dem Prinzip "FiFo (First in, First out)", aber du hast mit deiner "entfernen()"-Methode nen Stapel draus gemacht, indem du nach "FiLo (First in, Last out)" gearbeitet hast...

Damits ne Warteschlange wird, müsstest du die "entfernen()"-Methode z.B. so aufbauen:

public Patient entfernen(){
if(schlange[0] == null) return null;
Patient p = schlange[0];
for(int i = 0; i < laenge - 1; ++i){
schlange[i] = schlange[i + 1];
}
schlange[--laenge] = null;
return p;
}

Ausserdem hat deine "Warteschlange.InformationAusgeben()" 2 Probleme und einen Konventionsverstoß:

  1. Sollte ein Element der Schlange zufälligerweise den Wert "null" haben, gibts ne "java.lang.NullPointerException"
  2. Bei "p.informationAusgeben;" fehlen die Klammern.
  3. "Warteschlange.InformationAusgeben"... Der Methodenname beginnt mit nem Großbuchstaben... Konventionsverstoß... ;)

So läufts:

public void informationAusgeben(){
for(Patient p : schlange){
if(p!=null) p.informationAusgeben();
}
}
2
@Isendrak

Warteschlangen arbeiten nach dem Prinzip "FiFo (First in, First out)", aber du hast mit deiner "entfernen()"-Methode nen Stapel draus gemacht, indem du nach "FiLo (First in, Last out)" gearbeitet hast...

Hast natürlich Recht. Das wäre ja mal eine Warteschlange, in der der letzte als erstes dran ist ... Hab ich gar nicht dran gedacht.

  1. Sollte ein Element der Schlange zufälligerweise den Wert "null" haben, gibts ne "java.lang.NullPointerException"
  2. Bei "p.informationAusgeben;" fehlen die Klammern.

Stimmt, da war ich unachtsam, wozu auch dieser Editor hier nicht unwesentlich beigetragen hat.

Konventionsverstoß... ;)

Da habe ich mich selbst vom Diagramm verleiten lassen.

Naja, bin wohl irgendwie etwas müde heute ...

1

Naja rein logisch gesehen muss die Warteschlange ein Patienten-Array als Attribut haben, in welchen Patienten gepusht und removed werden können.

Steht ja sogar in der Aufgabenstellung. Wo genau hängst du denn?

Das Problem ist, dass ich nicht genau weiß was und wie ich die Methoden schreiben muss. Ich schätze mal dass Attribut wäre: PATIENT[30] schlange;  stimmts?

0

"Non-static method getJackpot() cannot be referenced from a static context" Was ist hier der Fehler (Java)?

Hi Leute!

Ich bin gerade dabei, ein Spiel mit BlueJ zu programmieren ("Verflixte 7"). Dabei ist aber der in der Frage stehende Fehler aufgetreten.


Hier ist die dazugehörige Methode "geldNehmen" aus der Klasse "Spieler" :

 public void geldNehmen()
    {
        kapital=kapital+pott.getJackpot();
        pott.auszahlen();
        text="Du hast "+Pott.getJackpot()+"€ gewonnen!";
        System.out.print(text);
    }

Und die Methode "getJackpot" aus der Klasse "Pott":

public int getJackpot()
    {
        return jackpot;
    }

Ich muss noch sagen, dass ich ein sog. Neuling in Java bin. Könnte mir deshalb bitte jemand erklären, welches Problem hier vorliegt bzw. wie ich es Lösen kann?

Wäre froh über schnelle und hilfreiche Antworten! :)

LG, Oldcoockie!

...zur Frage

Wie sieht die Punktnotation in Java aus oder wie kann ich auf auf andere Klassen zugreifen?

Wie kann ich in der Klasse Telefon die Methoden aus der Klasse Telefonbuch verwenden ? Wenn ich es mit Punktnotation versuche wie z.B.

public void eintrag_hinzufuegen(String name)
{
    Telefonbuch.hinzufuegen(name);
}

, kommt die Fehlermeldung : non static method cannot be referenced from a static context

1)

import java.util.ArrayList;
public class Telefon
{
protected ArrayList <Telefonbuch> telefonbuch;
protected boolean eingeschaltet;
        
        public Telefon()
    {
        // initialise instance variables
        telefonbuch = new ArrayList <Telefonbuch>();
    }
    
    public void anrufen (String name)
    {
    }
    
    public void einschalten()
    {
        eingeschaltet = true;
    }
    
    public void telefonbuch_uebersicht()
    {
        
    }
    
    public void eintrag_hinzufuegen(String name)
    {
    }
    
    public void eintrag_entfernen(String name)
    {
    }
    
    public boolean eintrag_suchen(String name)
    {
    }
}

2)

import java.util.Arrays;

/**
 * Write a description of class Telefonbuch here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Telefonbuch
{
    // instance variables - replace the example below with your own
    private int anzahl_eintrag;
    private int kapazitaet;
    private String[] name_liste;
    protected boolean gefunden;

    /**
     * Constructor for objects of class Telefonbuch
     */
    public Telefonbuch()
    {
        // initialise instance variables
        String [] name_liste = new String[kapazitaet];
        gefunden = false;
    }
    
    public void set_kapazitaet(int x)
    {
        kapazitaet = x;
    }
    
    public void telefonbuch_uebersicht()
    {
        for(int i=0; i < name_liste.length; i++)
        {
        System.out.println(name_liste[i]);
        }
    }
    
    public void hinzufuegen(String name)
    {
        
    }
    
    public void entfernen(String name)
    {
    }
    
    public boolean suchen(String name)
    {
        for(int i=0; i < name_liste.length; i++)
        {
         if(name_liste[i].equals(name))
         {
         gefunden = true;
         }
         else
         {
         //Abbruch
         }
        }
        return gefunden;
    }
}

...zur Frage

Wie gebe ich nach Erzeugung eines Objektes ein "int" Array im BlueJ-Methodenaufruf ein?

Ich sitze vor einem eigentlich so banalem Problem. Ich habe eine Methode geschrieben die durch Benutzereingabe einen String und ein int Array beim Aufruf übernehmen soll. Ich weiß wie ich den String in BlueJ beim Aufruf eingebe. Einfach in die "meinStringEingeben", aber wie mache ich das beim int Array oder überhaupt bei einem Array? Ich habe so einiges versucht. "Gefunden" habe ich nur diese Möglichkeit { irgendEineZahl } ABER wenn ich das mache dann erzeugt er kein int array sondern ein einfaches int, wodurch es selbstverständlich dann zum ArrayIndexOutOfBoundsException Auswurf kommt.

Mein Methodenkopf sollte auch nicht die Quelle des Übels sein

void meineMethode (String string, int[] intArray) deklariert habe.

...zur Frage

Programmieren BlueJ Strings durch eine Methode in eine andere einfügen

Hey Community, Ich habe ein Problem, und zwar habe ich folgendes Programm

public class Akinator
{
public static void main(String args[])
{
int erg = 0;
System.out.println("Wilkommen beim AKINATOR!");
System.out.println("Denken Sie sich irgendeinen Prominenten");


String end = "";
// FUßBALLER //
String David_Beckham = "David Beckham";
String Lionel_Messi = "Lionel Messi";
String Christiano_Ronaldo = "Christiano Ronaldo";
String Xavi_Hernandes = "Xavi_Hernandes";
String Ronaldinho= "Ronaldinho";
String Pyol = "Pyol";
String David_Alaba = "David_Alaba";
String Maradona = "Maradona";
String Wrong = "Sie denken anscheinend an Nichts!";
String Pele = "Pele";
String Roberto_Carlos = "Roberto Carlos";
String Sebastian_Proedl = "Sebastian Proedl";
String Iker_Casillas = "Iker Casillas";
String Mark_Janko = "Mark_Janko";

// DETEKTIVE //
String Sherlock_Holmes = "Sherlock_Holmes";

// MALER //
String Leonardo_Da_Vinci = "Leonardo Da Vinci";

// FUER HOMOS DIE DAS SPIEL NICHT CHECKEN //
String Nix = "Nix";
String Ja_Nein = "Jemanden der immer nur JA/NEIN drueckt";
String Drauflosdruecker= "den Drauflosdruecker";
String KA= "Ich weiß es auch nicht";

// SCHAUSPIELER // 
String Leonardo_Dicaprio= "Leonardo Dicaprio";
String Peter_Alexander = "Peter Alexander";
String Russell_Crowe= "Russell Crowe";


// Miliardaere //
String Mark_Zuckerberg = "Mark Zuckerberg";
String Bill_Gates = "Bill Gates";

// GEISTLICHEN //
String Benedikt_XVI = "Papst Benedikt XVI";
String Jesus = "Jesus";

// ZEICHENTRICKFIGUREN //
String Mickey_Mouse = "Mickey Mouse";
String Donald_Duck = "Donald Duck";
String Rudolf = "Rudolf mit der roten Nase";

}

public static String zusatz()
{
// Hier weiß ich irgendwie nicht weiter
}

Nun möchte ich in der Methode String zusatz erreichen, dass ich zuerst gefragt werde in welche Kategorie ( Fußballer, Schauspieler, Maler, Geistlichen ...) ich einspeichern möcht und danach noch wie der String heißen soll.

Weiß irgendjemand die Lösung?

...zur Frage

Wartenbefehl bei BlueJ

Hallo, ich programmiere seit kurzem mit BlueJ und als ich den Wartenbefehl "Sleep(5)" verwenden wollte kam die Fehlermeldung "cannot find Symbol - method sleep(int)".

Nachdem ich das Problem gegoogelt habe, hatte ich immer noch keine Antowrt. Überall stand, dass ich der "Sleep"-Befehl funktioniert. Ich habe auch schon die neuste BlueJ-Version runtergeladen. Gebracht hat es nichts.

Falls es einen Unterschied macht wie ich den Sleep-Befehl verwendet, hier der Quellcode:

public void AutomatischSchalten(){

    for(int i=0; i<5; i++) { 
    SchaltenWO();
    Sleep(1);
    SchaltenGS();

SchaltenWO() und SchaltenGS() habe ich schon deklariert.

Wieso funktioniert das nicht?

Schon mal danke im Vorraus,

Mit freundlichen Grüßen,

PlaysationFand

...zur Frage

Wie kann ich in BlueJ einen String, den ich beim erstellen des Objektes festgelegt habe wieder ändern?

Habe es schon mit der set-Methode probiert, jedoch weiß ich nicht genau wie ich das machen soll. Fogendes habe ich mir gedacht:

private String x //x ist zuerst ""

public void setX(String neu) { neu = x; }

wenn ich diese methode ausführe ändert sich aber nichts, hat jemand einen rat?

Danke im Voraus, LG

...zur Frage

Was möchtest Du wissen?