Tastensteuerung Hamster BlueJ?

Hallo,

ich will ein Labyrinth erstellen und will, dass man sich mit wasd bewegen kann.

import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Tastensteuerung extends Hamster implements KeyListener {
  @Override
  public void keyTyped(KeyEvent e) {
    //System.out.println("The key Typed was: " + e.getKeyChar());
    if ('w' == e.getKeyChar())
      vor();

    if ('a' == e.getKeyChar())
      linksUm();

    if ('d' == e.getKeyChar())
      linksUm(); 

    linksUm();
    linksUm();

    if ('s' == e.getKeyChar())
      linksUm();

    linksUm();
  }

  @Override
  public void keyPressed(KeyEvent e) {
    /*
    if (e.isActionKey())
      System.exit(0);

    System.out.println("The key Pressed was: " + e.getKeyChar());
    */
  }

  @Override
  public void keyReleased(KeyEvent e) {
    /*
    System.out.println("The key Released was: " + e.getKeyChar());
    */
  }

  public static void main (String args[]) {
    XHam Hansi = new XHam();

    // Setting the Frame and Labels
    Frame f = new Frame("Demo");
    //f.setLayout(new FlowLayout());
    //f.setSize(500, 500);
    //Label l = new Label();
    //l.setText("This is a demonstration");
    //f.add(l);
    f.setVisible(true);
    //////Dummy f = new Dummy(); //geht nur mit Frame

    // Creating and adding the key listener
    //KeyListenerExample k = new KeyListenerExample(Hansi);
    f.addKeyListener(Hansi);
  }

  /**
   * Konstruktor f�r Objekte der Klasse Tastensteuerung
   */
  public Tastensteuerung(int reihe, int spalte, int blickrichtung, int anzahlKoerner) {
    super(reihe,spalte,blickrichtung,anzahlKoerner);
  }

  public void zurMauer() {
    while (vornFrei())
      vor();
  }
}

Bei

f.addKeyListener(Hansi);

kommt ein Fehler. Kann mir jemand helfen?

Hamster, programmieren, Java, BlueJ
Mit BlueJ programmieren?

Hallo alle zusammen,

ich sitze gerade schon seit fast anderthalb Stunden an diesen drei Aufgaben und weiß einfach nicht weiter. Kann mir jemand helfen, der mit BlueJ Erfahrung hat?

Vielen Dank im Voraus.

Hier die Aufgaben:

/**Projekt: ReihungMax01_roh
 * Klasse : Reihung
 * @author: thh
 * @version: 13.5.14/2.11.12
 */
public class Reihung {
  // Objektvariablen deklarieren
  int anzahl = 19;
  double[] platz = new double[anzahl]; //Reihung deklarieren; wird 19 Kommazahlen 
  // als Werte erhalten; 
  /** 
   * Konstruktor fuer Objekte der Klasse Reihung */
  public Reihung() {
    // gesamte Reihung initialisieren, indem ... 
    for (int i = 0; i < anzahl; i++) {     // alle Inhalte der Reihung festgelegt werden
      platz[i] = 100 + 200*Math.random(); // <-- 5.
    }
  }
  
  /** die Gesamtzahl der Elemente
   * in der Reihe ausgeben */
  public int gibAnzahl() {
    return anzahl;
  }

  /** ein bestimmtes Element der Reihung ausgeben
   * die Nr. des gewuenschten Elementes angeben */
  public double gibPlatz(int i) {
    if (i < anzahl && i >= 0) { 
      return platz[i]; 
    }
    else { 
      return -888.888; 
    }
  } 
   
  /** Aufgabe 1:
   * setzt fuer zwei Elemente der Reihung platz neue Werte fest.
   * Das Element mit dem Index 5 in Reihung platz[ ] wird auf 555.55 gesetzt
   * Das Element mit Index 9 auf der Wert 99.99  */
   
  /** Aufgabe 1:
   * setzt ein bestimmtes Element der Reihung platz[ ] auf einen
   * neuen vorzugebenden Wert. 
    Schreibe nun für i den Index des Elements, welches verändert werden soll
    und für wert den Wert der eingesetzt werden soll*/
   
  /** Aufgabe 2: 
   * sucht das Maximum in der Reihung platz[ ] 
   * und meldet diesen Wert als Antwort */
   
  /** Aufgabe 3: 
   * sucht den Index, an dem das Maximum in der Reihung platz[ ] steht 
   * und meldet diesen Index */
}

/* 
 * 2. Beschreibe deine Idee in Worten. 
 *  Erstelle den Rumpf dieser Methode, die das Maximum in der Reihung 
 *  platz sucht und als Antwort zurueckgibt. 
 *  Achte auf die Farbunterlegung beim Schreiben neuer Methoden.
 *  Erkennst du im Quelltext die Idee/den Algorithmus wieder?
 * 
 * 3. Entwirf und implementiere eine Methode, die den Index nennt,
 *  an dem das Maximum steht. 
 *  Was ist der Unterschied zu Aufg.2?
 *  
 * 4. ** platz[i] = 100 + 200*Math.random();
 *  Hierdurch werden Zahlen zwischen 100.0 und 299.99999 zufaellig erzeugt.
 *  Welche Werte koennen die Elemente der Reihung annehmen, wenn
 *  Z.18 lautet:   platz[i] = 500*Math.random() + 200 ;  ?
 *  *** Z.18 lautet: platz[i] = 13 + i*Math.random() + 20*i ; ?
 * 5. Kopieren (auf Dateiebene ausserhalb von BlueJ) das gesamte
 *  Projekt-Verzeichnis und gib der Kopie einen neuen Namen wie ReihungMax02.
 *  Oeffne dieses Projekt und arbeite im neuen Projekt weiter. 
 */
Computer, programmieren, Java, BlueJ, Informatik
Wie gebe ich Inhalte korrekt beim Methodenaufruf in BlueJ ein?

Hallo allerseits,

ich hoffe jemand kann mir bei meinem Denkfehler helfen. (Kurzfassung am Ende)

Ich habe Informatik (11.Klasse, 2.Lehrjahr) in der Schule und habe zuhause selbst ein eigenes Projekt in BlueJ begonnen, unabhängig vom Unterricht. Dabei versuche ich neue Inhalte aus dem Unterricht spaßeshalber in dem Projekt zu wiederholen.

Zu meinem Projekt: Ich wollte einen Laden/Supermarkt erstellen, der (recht rudimentär) über die Konsole Feedback gibt und über Methodenaufrufe gesteuert wird.

Vor einiger Zeit haben wir in der Schule mit Strukturen wie Array, List, Stack und Queue abgeschlossen, gehen darauf aber nun mit neuem Wissen zurück ans aktive Programmieren. Deshalb wollte ich meinen Laden nun über List neu programmieren, es sollen also alle möglichen Produkte in einer List gespeichert sein.

Unser Lehrer hat uns eine bereits erstellte Klasse List ausgeteilt, anstatt mit ArrayList zu arbeiten. Ich nutze diese Klasse auch in meinem Projekt, sie besitzt soweit ich weiß auch in etwa dieselben Fähigkeiten wie ArrayList und heißt List<ContentType>.

Also war mein Gedankengang für die neue Umsetzung:

  1. Klasse Produkt erstellen mit den Attributen int Preis, int Warennummer und String Name (bei Preis macht double rückblickend mehr Sinn); siehe Bild

2.Klasse Inventar erstellen, bei der man Produkte in das Inventar einfügen kann, etc.; Sie besitzt eine List<Produkt> produktliste; siehe Bilder (2 und 3)

Insgesamt ist das noch nicht alles durchdacht oder vollständig, und orientiert sich etwas an dem was wir im Unterricht in ähnlicher Form bereits programmiert haben (in Form einer Bibliothek). Ist sicher alles sehr ineffizient und kann besser umgesetzt werden.

Wahrscheinlich lacht ihr über meine Gedankenblockade, aber ich kann mich in keinster Weise mehr daran erinnern, wie ich bei dem Methodenaufruf produktHinzufuegen(Produkt pProdukt) der Klasse Inventar mein nachgefragtes Produkt angebe. Muss ich das mit Schweifklammern angeben, eine bestimmte Methode aufrufen, habe ich etwas bei der Deklarierung etc. vergessen? Ich bin gerade etwas hilflos und habe auch schon verschiedene Eingaben ausprobiert.

Wäre super, wenn jemand mir auf die Sprünge helfen könnte.

Kurzfassung: Laden/Supermarktprojekt in BlueJ, mit einer allgemeinen Klasse Produkt. Über Klasse Inventar können dem Inventar List<Produkt> neue Produkte hinzugefügt werden. Wie gebe ich dieses Produkt bzw. mehrere Produkte bei Methodenaufruf produktHinzufuegen(Produkt pProdukt) korrekt an? Muss ich etwas anders programmieren?

(Netto war das ursprüngliche Projekt mit einer einzigen Klasse und String; die Klasse Laden ist noch leer, abgesehen von der Erzeugung eines Regales vom Typ Inventar)

Gerne nachfragen, falls ich etwas nicht gut erklärt habe oder anderweitig Bilder schicken soll. Für Tipps und allgemeine Verbesserungsvorschläge bin ich immer offen!

Bild zu Frage
Schule, programmieren, Java, BlueJ, Informatik
Array in BlueJ aufrücken lassen?

Ich habe einen Array mit CDs (50 Plätze), die mit Titel, Autor und Erscheinungsjahr gespeichert werden, erstellt. Jetzt wollte ich die Funktion einbauen, dass man auch CDs löschen kann. Das funktioniert auch, nur dass die übrig gebliebenen CDs, die "über" der Gelöschten sind, nicht nach rücken. Also wenn die Erste CD gelöscht wird, soll die Cd auf dem zweiten Platz auf den Ersten rücken.

Habt ihr da eine Idee, wie ich das machen kann?

Vielen Dank schon mal im Voraus. :)

public void cdLoeschen (String pTitel)
   {
       boolean raus = false;
       if(cdanzahl != 0)
       {
           for(int i=0;i<cdanzahl;i++)
           {
               if(cdSammlung[i].gibTitel()== pTitel)
               {
                   cdSammlung[i] = null;
                   raus = true;
               }
               cdanzahl --;
           }
       }
       else
       {
           System.out.println("Das CD-Regal ist leer, Sie koennen nichts loeschen!");
       }
       if(raus = true)
       {
           System.out.println("\"" + pTitel + "\" wurde geloescht!");
       }
       else
       {
           System.out.println("\"" + pTitel + "\" konnte nicht gefunden werden!");
       }
   }
Computer, Schule, programmieren, Java, BlueJ, Informatik
In BlueJ Array durchsuchen?

Ich möchte eine Array-Liste mit CDs, die mit Titel, Autor und Erscheinungsjahr gespeichert werden, durchsuchen (mit dem Erscheinungsjahr). Das Programm soll unabhängig vom Inhalt ablaufen. Es soll also nicht ein gespeichertes Erscheinungsjahr im Programm benutz werde. Ich habe schon etwas programmiert und bekomme auch keine Fehlermeldung. Allerdings wird mir in der Konsole dann garnichts mehr angezeigt.

Vielen Dank schon mal im Voraus. :)

public void suchenMitErscheinungsjahr(int pErscheinungsjahr)

   {

       boolean gefunden = false;

       if (cdanzahl !=0)

       {

           for (int i=1; i<cdanzahl; i++)

           {

               if (cdSammlung[i].equals(pErscheinungsjahr))

               {

                   System.out.println(cdSammlung[i].gibTitel());

                   System.out.println(cdSammlung[i].gibInterpret());

                   System.out.println(cdSammlung[i].gibErscheinungsjahr());   

                   gefunden = true;

               }

           }

       }

       else

       {

           System.out.println("Das CD-Regal ist leer!");

       }

       

       if (gefunden = false)

       {

           System.out.println("Eine CD mit diesem Erscheinungsjahr existiert nicht im Regal!");

       }

   }

Computer, Schule, programmieren, Java, BlueJ, Informatik
Array-Liste alphabetisch sortieren in BlueJ?

Ich möchte eine Array-Liste mit CDs, die mit Titel, Autor und Erscheinungsjahr gespeichert werden, alphabetisch (nach Titel) sortieren (das Programm soll unabhängig vom Inhalt ablaufen. Es soll also nicht ein gespeicherter Titel im Programm benutz werden). In der if-Anweisung wird mir beim > eine Fehlermeldung angezeigt, was ja sinnvoll ist, da ein String ja nicht > als ein andere sein kann. Ich weiß allerdings nicht, was ich stattdessen schreiben soll.

Vielen Dank schonmal im Voraus.

public void sortiernNachTitel()

   {

       cd temp;

       for(int i=1; i<cdanzahl; i++)

       {

           for(int j=0; j<cdanzahl-i; j++)

           {

               if(cdSammlung[j].gibTitel()>cdSammlung[j+1].gibTitel())

               {

                   temp=cdSammlung[j];

                   cdSammlung[j]=cdSammlung[j+1];

                   cdSammlung[j+1]=temp;

               }

           }

       }

       for( int a=0; a<cdanzahl; a++)

       {

           System.out.println(cdSammlung[a].gibTitel());

           System.out.println(cdSammlung[a].gibInterpret());

           System.out.println(cdSammlung[a].gibErscheinungsjahr());

       }

   }

Computer, Schule, programmieren, Java, Array, BlueJ, Informatik

Meistgelesene Fragen zum Thema BlueJ