hposition

N

nisses

Gast
Hallo,
ich habe zurzeit in der Schule Java mit BlueJ (mit SuM)
Ich habe Bluej nun Zuhause und habe ein Problem.
Wenn ich den Stift zur Maus position gehen lassen möchte:
Java:
if  (maus.istGedrueckt())
              {   pen.bewegeBis((maus.hPosition), (maus.vPosition));
                  pen.runter();
              
else 
              {    
                  pen.hoch();
              }
kommt dann immer der Fehler: cannot find symbol - variable hPosition
ich verstehe nicht warum
 

Michael...

Top Contributor
Die Fehlermeldung besagt, dass es (für das Objekt maus) keine Variable namens hPosition gibt, diese also scheinbar in der Klasse anhand der maus erzeugt wurde nicht definiert ist.
 
N

nisses

Gast
in der Schule funktionert es aber. Da muss man einfach auf neues Klasse und fertig. (natürlich im KOnstruktor maus aufrufen).
Außerdem habe ich ein Buch und habe alles so gemacht wie es darin stehe.
Die variable ist laut dem Buch ein Anfragedienst der Maus. wie kann ich den initieren?
 
N

nisses

Gast
hahaha habs geschafft.
Der Fehler war, dass hPosition ein Parameter braucht
so ist richtig:
Java:
(maus.hPosition())

habe aber leider noch ein Problem:
es kommt jetzt immer der Fehler: invalid method declaration; return type required

hier mein Programmtext:
Java:
public class SuMAnwendung extends EBAnwendung
{
    // INITIALISIERUNG
        // Objekte
        Bildschirm screen;
        Buntstift pen;
        Maus maus;
        Tastatur tastatur;
        int werkzeug;
        
        konstruktor();
        paint();
        switch1();
       
        // Konstruktor
    
   
    public void konstruktor()
    {
        pen = new Buntstift();
        screen = new Bildschirm();
        maus = new Maus();
        tastatur = new Tastatur();
        paint();
    }
    public void paint()
            {
        // Pinsel
       
        do
          { if  (maus.istGedrueckt())
              {   pen.bewegeBis((maus.hPosition()), (maus.vPosition()));
                  pen.runter();
              }
            else 
              {    
                  pen.hoch();
              }
           } while(werkzeug > 1);
        }
    public void switch1()
        {
        if (tastatur.wurdeGedrueckt())
            {     switch (tastatur.zeichen())
                    { 
                    case '1': werkzeug = 1; break;
                    case '2': werkzeug = 2; break;
                    default: //nichts
                }
                tastatur.weiter();
            }
        }
    }
 

Haave

Top Contributor
Diese drei Methoden gehören aber wohl eher in die main()-Methode. Ein Methodenaufruf wie [c]paint();[/c] darf nicht einfach mitten in einer Klasse herumstehen.
 
N

nisses

Gast
das hilft mir nicht.
Ich möchte nur wissen wie ich es hinbekomme, dass er die 3 Methoden ausführt.
wenn ich die public void zeilen und die {} wegmache erstellt er im BlueJ Projekt ein Objekt in der Leiste unten.
 

Haave

Top Contributor
Ist die Klasse SuMAnwendung dein ganzer Code? Hast du irgendwo eine main()-Methode? Was steht da drin?
Java:
public static void main(String[] args) {
}

Ich kenne BlueJ nicht und kann nichts damit anfangen, wenn du schreibst: "wenn ich die public void zeilen und die {} wegmache erstellt er im BlueJ Projekt ein Objekt in der Leiste unten".
 

Michael...

Top Contributor
Ist die Klasse SuMAnwendung dein ganzer Code? Hast du irgendwo eine main()-Methode? Was steht da drin?
Java:
public static void main(String[] args) {
}
Nein, sowas gibt's/brauch man bei BlueJ nicht. BlueJ ist so ein Lernprogramm mit dem man [IRONIE]ohne sich mit Java auszukennen [/IRONIE] einfach Klassen erstellen und ausführen kann.

Aber die Methodenaufrufe in Zeile 11 bis 13 funktionieren vermutlich auch in BlueJ nicht.

Tipp an den Threadersteller: Jemanden fragen der sich mit BlueJ auskennt. Hier im Forum wird man nicht allzu viele BlueJ "Experten" antreffen.
 
N

nisses

Gast
ok.
Doch in BlueJ kann man so Methoden aufrufen.
In der Schule funktioniert das ja auch. Ich werde mal den Lehrer fragen. Der sieht aber auch nicht so aus als würde er es wissen xD.
 
N

nisses

Gast
gut dann noch eine Frage: wo ist in meinem Programm der Konstruktor, bzw. wie und wohin erstelle ich ihn? In der Schule war immer alles vorbereitet und ich hab die genaue Reihenfolge vergessen.
 
N

nisses

Gast
gut
ich glaub BlueJ is doch ganz sinnvoll um die grundlagen zu lernen.

Es kommt leider noch die Fehlermeldung:
incompatible types - found int but expected boolean.

also int is integer also ne ganze Zahl
und Boolean ist doch True/False - Variable oder?
wie rufe ich die auf?
bei integer geht ja einfach int XXX
 

Michael...

Top Contributor
gut
ich glaub BlueJ is doch ganz sinnvoll um die grundlagen zu lernen.
Kann ich nix zu sagen - kenne BlueJ nicht.
Ich habe damals Java mit Texteditor und Konsole gelernt und fand es eigentlich ganz gut, da man alles selbst in der Hand hatte und sich nicht mit irgendwelchen Entwicklungs/Lernumgebungen rumschlagen musste. Und man hat einen guten Einblick in die Grundlagen von Java (und nicht nur die der Programmierung) bekommen.
Es kommt leider noch die Fehlermeldung:
incompatible types - found int but expected boolean.

also int is integer also ne ganze Zahl
und Boolean ist doch True/False - Variable oder?
wie rufe ich die auf?
bei integer geht ja einfach int XXX
Die Fehler sind ja selbstsprechend irgendwo wird ein boolean erwartet, aber Du stellst einen int zur Verfügung.
In den Fehlermeldungen wird auch die Codezeile mit angegeben.

Mehr können wir hier ohne Code nicht dazu sagen.
 
N

nisses

Gast
wie macht man denn eine Boolean in JAVA ohen BlueJ?

weil das mit dem Konstruktor z.B. is genauso in BlueJ.

Er verlangt die Boolean in der Bedingung einer Schleife (hinter dem while)
Java:
do
          { if  (maus.istGedrueckt())
              {   pen.bewegeBis((maus.hPosition()), (maus.vPosition()));
                  pen.runter();
              }
            else 
              {    
                  pen.hoch();
              }
           } while(werkzeug=1);
 

preachie

Aktives Mitglied
Java:
           } while(werkzeug=1);

Damit weist Du der Variable "werkzeug" den Wert 1 zu, was ein int ist.
Was Du aber machen möchtest und was while() an der Stelle erwartet ist ein boolean, den Du z.B. durch eine Vergleichsoperation bekommst

Java:
           } while(werkzeug==1);
oder
Java:
           } while(werkzeug>=1);
Java:
           } while(werkzeug<=1);
usw usf.

Allerdings ergibt sich mir kein Sinn in Deiner Schleife, da Du auf werkzeug prüfen willst, aber werkzeug innerhalb der Schleife nie den Wert ändert. Somit bist Du in einer Endlosschleife.
Was genau möchtest Du denn da erreichen?
 

Michael...

Top Contributor
benötigt wird boolean (!=Boolean - ist ein Wrapper Objekt für boolean)
machen musst Du den nicht.

In Java prüft man mit == auf Gleichheit:
Java:
} while(werkzeug==1);
 
N

nisses

Gast
oh man steht voll fett in meinem Buch und ich überlese es einfach.
Hab leider noch einen Fehler mit dem ihr wahrschienlcih noch weniger anfangen könnt wie mit dem darüber:
Immer wenn ich "male" erschient ein Fehler der so ausseiht:
Zuerst streicht er die Zeile an in der etwas gezeichnet wird und sagt: java.lang.NullPointerException: null (in sum.kern.Buntstift)
Java:
pen.bewegeBis((maus.hPosition()), (maus.vPosition()));
 

Oben