Problem beim Zeichnen von "Das Haus vom Nikolaus"

  • Themenstarter Themenstarter Deniska93
  • Beginndatum Beginndatum
D

Deniska93

Gast
Hallo, habe soeben das Haus vom Nikolaus in Java programmiert (bzw es versucht). Es scheint meiner Meinung nach auch richtig, allerdings kommt, wenn ich das Programm kompilieren möchte, eine Fehlermeldung.

Compiliere C:\Users\*** ***\Desktop\Nikolaus.java mit Java-Compiler
Nikolaus.java:41:5: non-static method zeichneHaus() cannot be referenced from a static context
zeichneHaus();
^
1 error


Hier ist mein Code:

Java:
import sum.kern.*;

public class Nikolaus{

  /* verwendete Objekte */

  // Anfang Attribute
  private Bildschirm meinBildschirm;
  private Stift meinStift;
  // Ende Attribute



  // Anfang Methoden
  public void zeichneHaus(){

    /* Aufbau der Objekte */
    meinBildschirm=new Bildschirm();
    meinStift=new Stift();
    
    /* Nachrichtenteil */
    meinStift.bewegeBis(100,100);
    meinStift.runter();
    meinStift.bewegeBis(140,100);
    meinStift.bewegeBis(100,60);
    meinStift.dreheBis(60);
    meinStift.bewegeUm(40);
    meinStift.dreheUm(-120);
    meinStift.bewegeUm(40);
    meinStift.bewegeBis(100,60);
    meinStift.bewegeBis(100,100);
    meinStift.bewegeBis(140,60);
    meinStift.bewegeBis(140,100);
    
    /* Objekte freigeben */
    meinStift.gibFrei();
      //meinBildschirm.gibFrei();
  }
  
  public static void main(String[] haus){
    zeichneHaus();
  }
  // Ende Methoden
}
 
Zuletzt bearbeitet von einem Moderator:
musst erst ein object vom Typ Nikolaus instanziieren und dann die Methode mit deinObjName.zeichneHaus() aufrufen.

alternativ zeichneHaus() und die Attribute statisch deklarieren.
 
musst erst ein object vom Typ Nikolaus instanziieren und dann die Methode mit deinObjName.zeichneHaus() aufrufen.

alternativ zeichneHaus() und die Attribute statisch deklarieren.



und wie genau geht das mit dem instanzieren? is das schwer? steh grad iwie aufm schlauch sorry -.-
 
Also dann einmal oben

Java:
 private Haus meinHaus;

und unten unter
Java:
meinStift=new Stift();
einfach ein

Java:
meinHaus=new Nikolaus();

??
 
Du solltest dir ein Javabuch besorgen und diese Grundlagen unbedingt nachlesen.

ein
Code:
new Nikolaus().zeichneHaus()
reicht aus.

So wie du es beschrieben hast, würde es auch gehen.
 
Code:
private static Nikolaus
und macht auch wenig sinn, das objekt in zeichneHaus zu instanziieren 🙂
 
Danke Leute, es funktioniert, habe nun sogar verschiedene Arten gefunden das Haus zu zeichnen 😉

Danke für die viele Hilfe. Hier für andere Leute, die gerne das Haus zeichnen würden die verschiedenen Codes:

HIER VARIANTE 1:
[Java]import sum.kern.*;

public class Nikohaus{

private Bildschirm bs; // -> Bildschirm "bs" nennen
private Stift st; // -> Stift "st" nennen


// Anfang Methoden

public void zeichne(){

bs=new Bildschirm(); // -> Bildschirm "bs" erzeugen (ohne Angaben)
st=new Stift(); // -> Stift "st" erzeugen (ohne Angaben)


st.bewegeBis(400,400); // -> Stift nach unten links bringen
st.runter(); // -> Stift runter
st.bewegeBis(500,400); // Das -> Stift nach unten rechts navigieren
st.bewegeBis(400,300); // ist -> Stift nach oben links navigieren
st.bewegeBis(450,230); // das -> Stift zur Dachspitze navigieren
st.bewegeBis(500,300); // Haus -> Stift nach oben rechts navigieren
st.bewegeBis(400,300); // vom -> Stift nach oben links navigieren
st.bewegeBis(400,400); // Ni- -> Stift nach unten links navigieren
st.bewegeBis(500,300); // ko- -> Stift nach oben rechts navigieren
st.bewegeBis(500,400); // laus -> Stift nach unten rechts navigieren

st.gibFrei(); // -> Stift freigeben
}

/* Main-Methode (muss vorhanden sein!) in der das Programm
aufgerufen wird, damit etwas passiert */
public static void main(String[] args){
new Nikohaus().zeichne();
}

// Ende Methoden
}[/Java]

HIER VARIANTE 2:
[Java]import sum.kern.*;

public class Nikohaus2{
private Bildschirm meinBildschirm; // Bildschirm "meinBildschirm" nennen
private Stift meinStift; // Stift "meinStift" nennen


// Anfang Methoden

public Nikohaus2(){
meinBildschirm=new Bildschirm(); // Bildschirm "meinBildschirm" erzeugen (ohne Angaben)
meinStift=new Stift(); // Stift "meinStift" erzeugen (ohne Angaben)

meinStift.bewegeBis(100,300); // Startposition
zeichne(); // Prozedur "zeichne()" aufrufen
meinStift.dreheUm(-90); // Stift um 90° nach rechts drehen
zeichne(); // Prozedur "zeichne()" aufrufen
meinStift.dreheUm(-90); // Stift um 90° nach rechts drehen
zeichne(); // Prozedur "zeichne()" aufrufen
meinStift.dreheUm(-90); // Stift um 90° nach rechts drehen
zeichne(); // Prozedur "zeichne()" aufrufen
meinStift.dreheUm(-30); // Stift um 30° nach rechts drehen
zeichne(); // Prozedur "zeichne()" aufrufen
meinStift.dreheUm(-120); // Stift um 120° nach rechts drehen
zeichne(); // Prozedur "zeichne()" aufrufen
meinStift.dreheUm(-75); // Stift um 75° nach rechts drehen
meinStift.runter(); // Stift runter
meinStift.bewegeUm(282.8427125); // Stift bewegen um 282.8427125 (errechnet mittels Pytagoras!)
meinStift.hoch(); // Stift hoch
meinStift.dreheUm(-135); // Stift um 135° nach rechts drehen
zeichne(); // Prozedur "zeichne()" aufrufen
meinStift.dreheUm(-135); // Stift um 135° nach rechts drehen
meinStift.runter(); // Stift runter
meinStift.bewegeUm(282.8427125); // Stift bewegen um 282.8427125 (errechnet mittels Pytagoras!)
meinStift.hoch(); // Stift hoch
}

public void zeichne(){
meinStift.runter(); // Stift runter
meinStift.bewegeUm(200); // Stift bewegen um 200
meinStift.hoch(); // Stift hoch
}

/* Main-Methode (muss vorhanden sein!) in der das Programm
aufgerufen wird, damit etwas passiert */
public static void main(String[] args){
new Nikohaus2();
}

// Ende Methoden
}[/Java]
 

Neue Themen


Zurück
Oben