Der Programmier-Thread

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
#41
Wie gesagt..zeichneKreis ist eine schon vorgegebene Methode, die ich immer nutzen kann. Da hab ich keine Zeile Code selbst zu geschrieben. Und daher kann ich euch keine weiteren Infos zu geben. Aber ich werds gleich mal ein wenig umbauen, vll funktionierts ja dann...
 

Planet

50% water, 50% air, the glass is always full!
PSN-Name: PlanetJumble
#42
Im Methodenaufruf selber kann keine Nullpointerexception entstehen, das muss irgendwo in der zeichneKreis-Methode passieren. Ohne weiteres Material können wir dir da leider nicht helfen. Poste mal den Stacktrace!

@Chrizel: Ich programmiere seit über 20 Jahren und ich sage: Java ist die optimale Sprache für Programmieranfänger! :p
 
Zuletzt editiert:

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
#43
zeichneKreis

public void zeichneKreis(double pRadius) Der Stift zeichnet unabhaengig von seinem Zustand im aktuellen Zeichenmodus einen Kreis mit der aktuellen Position als Mittelpunkt und dem angegebenen Radius. Die Position und die Richtung des Stiftes bleiben unveraendert.
Parameters:pRadius - der Radius des Kreises
Mehr kann ich euch dazu nicht geben. Aber vielleicht könnt ihr mir zumindest sagen, was diese Fehlermeldung bedeutet und dann finde ich es selbst irgendwie. Komisch ist ja, dass es eigentlich funktioniert hat und ich das ganze dann ein wenig verbessern wollte und es nun nicht passt. Das blöde bei BlueJ ist aber, dass der das sofort immer wieder überschreibt...
 
PSN-Name: chrizeliq
#44
@Chrizel: Ich programmiere seit über 20 Jahren und ich sage: Java ist die optimale Sprache für Programmieranfänger! :p
Klar, ich weiss dass du Java-Fan bist, hast du ja hier auch schon irgendwo geschrieben. Aber das ist deine Meinung, ich finde es trotzdem zu kompliziert als Anfaenger damit anzufangen - eben wie gesagt aus den Gruenden weil man gleich am Anfang mit vielen unnoetigen Sachen konfrontiert wird, die fuer einen Programmieranfaenger nur verwirrend sind. Guck dir doch mal den Code von crack-king an -- das ist doch kacke!! (Nix gegen dich, crack-king :ugly: ) Zugriffsmodifier (private/public)... Package imports... Explizite Typenangaben... waere ich Anfaenger waer mir das zu kompliziert... ok, vielleicht ist crack-king schon weiter, sonst wuerden sie wahrscheinlich nicht schon mit Vererbung rumspielen.

@crack-king: Rueckst du deinen Code nicht ein, oder schreibst du das wirklich so haesslich hin? Ich kann dir empfehlen mit Einrueckung zu arbeiten, das erhoeht die lesbarkeit erheblich. Beispiel:

Code:
import sum.kern.*;

public class Tisch {
    Bildschirm derBildschirm;

    public Tisch(int b) {
        derBildschirm = new Bildschirm(b, b);
    }

    public void fuehreAus() {
    }
}
Und auch mit Leerzeichen wuerde ich nicht zu sparsam umgehen -- nicht alles so zusammenquetschen, Beispiel:
Code:
public void Kollision() {
    if (hPosition() > (800 - 10)) {
        dreheUm(180 - 2 * winkel()); 
    } else if (hPosition() < 0) {
        dreheUm(180 - 2 * winkel());
    } else if (vPosition() > (800 - 10)) {
        dreheUm(360 - 2 * winkel());
    } else if (vPosition() < 0) {
        dreheUm(360 - 2 * winkel());
    }
}
Hast du das Recht den Code incl. dieser sum/*-Pakete vielleicht irgendwo bereitzustellen? (z.B. als ZIP) Dann kann dein Problem vielleicht doch noch gefunden werden?

Aber vielleicht könnt ihr mir zumindest sagen, was diese Fehlermeldung bedeutet und dann finde ich es selbst irgendwie. Komisch ist ja, dass es eigentlich funktioniert hat und ich das ganze dann ein wenig verbessern wollte und es nun nicht passt.
Thrown when an application attempts to use null in a case where an object is required. These include:

* Calling the instance method of a null object.
* Accessing or modifying the field of a null object.
* Taking the length of null as if it were an array.
* Accessing or modifying the slots of null as if it were an array.
* Throwing null as if it were a Throwable value.

Applications should throw instances of this class to indicate other illegal uses of the null object.

http://java.sun.com/javase/6/docs/api/java/lang/NullPointerException.html
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
#45
Also ich rück schon ein, nur hier ist die Einrückung dann verloren gegangen. Das mit den Leerzeichen stimmt dann schon. Ohne Einrücken wäre das ganze ja noch schlimmer :ugly:

Also hier kann man sich die Sum.Klasse und damit direkt auch BlueJ runterladen und ausprobieren.
Mein Programm könnt ihr hier herunterladen. Die Klasse Spieler1 wurde gestern nur schnell hinzugefügt, als das ganze noch funktioniert hat :ugly: Aber jetzt läuft ja gar nichts. Müsste also alles sein, was ihr dafür braucht.
 

Planet

50% water, 50% air, the glass is always full!
PSN-Name: PlanetJumble
#46
Ich vermute, dass die verlangte "aktuelle Position" nicht gesetzt (== null) ist. Dann wäre die nichtssagende Fehlermeldung aber sehr leicht vermeidbar gewesen.

Egal, was die Ursache ist: du darfst dem Autor der Methode von mir gerne ausrichten, dass er mal Programmieren lernen sollte, bevor er es jemand anderem beibringen möchte. :twisted:

Und sollte das eine Funktion aus einer heruntergeladenen Lernbibliothek sein, dann um so schlimmer. Mit so einem Kram Programmieren zu lernen grenzt an "Rate mal mit Rosenthal". Warum muss man unbedingt grafisch anfangen?

@Chrizel: Zugriffsmodifizierer sind ein elementarer Bestandteil der Objektorientierung. Und Objektorierntierung begünstigt sauberen Programmierstil. Solange man nicht mit Kommandozeilencompiler und Classpath-Gedöns anfängt, sind die Einstiegshürden für Java sogar sehr niedrig. Du kannst ja mal mit C++ anfangen lassen... :ugly:

EDIT: OMG - jetzt sehe ich es. Es ist tatsächlich diese SuM-Bibliothek.
 
Zuletzt editiert:
PSN-Name: Papa_Justify
#47
Ich hab sie sogar installiert :lol:

Aber begreife einer mal dieses BlueJ - Teil: keine Option zum Ausführen des Java-Programms nur so eine Option "Übersetzen" wobei sich mir jetzt nicht erschließt ob es sich dabei um das "kompilieren" handelt. Hab dann versucht aus crack-kings Pong-Programm eine .jar-Datei zu machen um es wenigstens mal ausführen zu können.

Aber das Programm hat ja nichtmal ne main-Methode zum Einstieg :OOO Ich frage mich, wie du da überhaupt irgendwas rausbekommen hast, an Fehlermeldungen
 
PSN-Name: chrizeliq
#48
@Chrizel: Zugriffsmodifizierer sind ein elementarer Bestandteil der Objektorientierung.
Ok, lass mich klugscheissen, ich sage dir - Zugriffsmodifier sind IMHO kein elementarer Bestandteil der Objektorientierung. Klar, es ist ein Bestandteil von dem was dir ein paar Sprachen wie Java, C++, Ruby oder Objekt Pascal anbieten. Aber in Smalltalk gibt es z.B. keine Zugriffsmodifier, und du weisst bestimmt welche Rolle Smalltalk in der Geschichte der OOP Sprachen gespielt hat. Python hat auch keine Zugriffsmodifier... dort basiert vieles dann eher auf Konventionen (z.B. Underscore vor die Methodennamen) und nicht auf Sprachfeatures.

Klar, jetzt kommst du mit Argumenten wie "Aber Zugriffsschutz ist wichtig" und "Es macht Sinn, vor allem bei groesseren Projekten"... ja, aber ich finde es trotzdem nicht relevant fuer einen Anfaenger die Programmierung lernen wollen.

Auch finde ich Objektorientierung ganz am Anfang nicht relevant fuer einen Anfaenger. Die Leute sollten eher erst mal lernen wie ein Computer funktioniert, was Variablen, Fallunterscheidungen und Schleifen sind -- Funktionen schreiben koennen, ohne Klassen schreiben zu muessen (!) -- und erst dann kann man ueber Konzepte wie OOP nachdenken...

Desshalb verstehe ich ueberhaupt nicht, wie man Java als "einfach" bezeichnen kann. Klar ist C++ nochmal ein Stueck komplexer. Und OOP wird auch viel zu stark ueberschaetzt -- evtl. waere es besser mit funktionaler Programmierung anzufangen, weil es sauberer und logischer ist wenn man nur mit mathematischem Wissen von der Schule daherkommt.

Ist natuerlich alles IMHO.

Am Ende bleibt es eh egal -- jemand der sich wirklich fuer Programmierung interessiert, muss sich sowieso alles mal anschauen und alles irgendwie lernen.
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
#49
Ich hab sie sogar installiert :lol:

Aber begreife einer mal dieses BlueJ - Teil: keine Option zum Ausführen des Java-Programms nur so eine Option "Übersetzen" wobei sich mir jetzt nicht erschließt ob es sich dabei um das "kompilieren" handelt. Hab dann versucht aus crack-kings Pong-Programm eine .jar-Datei zu machen um es wenigstens mal ausführen zu können.

Aber das Programm hat ja nichtmal ne main-Methode zum Einstieg :OOO Ich frage mich, wie du da überhaupt irgendwas rausbekommen hast, an Fehlermeldungen
Also mit BlueJ kann man die Klasse Hauptprogramm selbst ausführen und dann zeigt er auf einmal auch an, dass dort nen Fehler ist. Vorher nicht...Und das übersetzen prüft wohl nur ob genügend Klammern da sind, i-welche Variablen noch nicht initialisiert wurden usw. Ob es wirklich funktioniert, sagt dir das Ding aber auch nicht.

@Rest

Ich hab keinen Plan wovon ihr spricht..Nur Objetkorientiertes Programmieren hab ich schonmal gehört, wobei ich da bislang noch nicht ganz durchgestiegen bin. Der Lehrer macht das alles nur so oberflächlich und 90% der Klasse hat keinen Plan davon, was wir machen...
 
PSN-Name: Papa_Justify
#50
Nun crack-king,

das Programm passt hinten und vorne nicht! Selbst in der BlueJ Anleitung steht, dass man eine main-Methode braucht um es zu starten. In der Hauptprogramm-Klasse ist aber nichts dergleichen. Weiß gar nicht, wie du das so zum Laufen kriegst!
 
#51
Ich hab keinen Plan wovon ihr spricht..Nur Objetkorientiertes Programmieren hab ich schonmal gehört, wobei ich da bislang noch nicht ganz durchgestiegen bin. Der Lehrer macht das alles nur so oberflächlich und 90% der Klasse hat keinen Plan davon, was wir machen...
Macht dann wohl keinen Sinn mit Java anzufangen :D

@chrizel und Planet
Ich durfte mit Java anfangen an der Uni und der Anfang war nur wtf!!!!!
Mittlerweile steig ich da durch, aber stimmt schon den ganzen Kram braucht man eigentlich nicht um erst Mal zu lernen, was Arrays sind und wie Schleifen funktionieren usw.

@crack-king
Ist die Main dann in dem Paket vom Lehrer oder was? Was ist das für ne Scheiße? Und BlueJ? Dann kann man auch gleich mit Editor und Konsole anfangen.

Benutzt ihr eigentlich Eclipse zum Arbeiten?
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
#52
Main? WTF?

Im Hauptprogramm gibts doch die Methode fuehreAus. Jetzt übersetzt du mit BlueJ ersteinmal alles und dann rechtsklick auf die Klasse Hauptprogramm und dann auf "New Hauptprogramm". Dann müsste ein Bildschirm erscheinen und unten links im BlueJ Fenster ein roter Kasten. Darauf klickste mit rechtsklick und dann wählste die Methode fuehreAus aus.
 
PSN-Name: Papa_Justify
#53
Sorry, aber diese SuM-Bibliothek ist ein einziger FAIL!

Habs jetzt hinbekommen einen Kreis zu zeichnen um danach beim Löschen gleich wieder bei einem NullPointer zu landen. Das Paket steckt voller Fehler! Oder es ist zu kompliziert und umständlich! PFUI!
 
PSN-Name: Papa_Justify
#58
Die main Methode ist immer der Anfangspunkt. Die steckt in der Hauptklasse drin, die man ausführt um ein Programm zu starten. Dort kreiert man seine ersten Objekte, zB ein Fenster mit Pong drin.
Das Ding funktioniert tatsächlich ohne main-Methode, da man über das Programm eine neue Instanz seiner Klasse "Hauptprogramm" erzeugt!
Hab dann ein bisschen gedebuggt und festgestellt, dass der "Bildschirm" nicht initiiert war, hab das geändert, konnte einen Kreis zeichnen und wurde dann beim Löschen und erneutem Kreiszeichnen wieder auf nem NullPointer gelandet!

Also nein.. und dann gibt der Typ in dem Paket nichtmal den Quellcode mit.. ist dem wahrscheinlich selbst zu peinlich!
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
#59
Und bei mir will der momentan nichtmal nen Kreis zeichnen...Und in der Schule gibts jedes mal die selben Probleme! Das DIng ist einfach schrott. ICh weiß noch letzte Stunde hab ich meinen Code vorgestellt und der Rest sollte das dann so implementieren. Bei 50% lief es nicht :ugly: Das Ding ist ein einziger großer Fehler, aber der Lehrer lässt sich nicht umstimmen.
 
#60
Und bei mir will der momentan nichtmal nen Kreis zeichnen...Und in der Schule gibts jedes mal die selben Probleme! Das DIng ist einfach schrott. ICh weiß noch letzte Stunde hab ich meinen Code vorgestellt und der Rest sollte das dann so implementieren. Bei 50% lief es nicht :ugly: Das Ding ist ein einziger großer Fehler, aber der Lehrer lässt sich nicht umstimmen.
Zeig ihm mal dieses Forum, damit er mal lesen kann, wie man es richtig macht. Vielleicht sollte er mal ein richtiges Javabuch lesen, zB Java Core.

Frag ihn mal, ob er weiß was ne Main Methode ist und das ihr das so machen wollt. Viel mehr Aufwand macht das auch nicht, sieht immer so aus:

Code:
public static void main(String [] args) {

}
Da muss man sich nicht viel merken, außer dass in der geschweiften Klammer der Code steht, der ausgeführt wird, wenn man das Programm startet. Wie man das startet, ist wieder ein anderes Ding, aber eine der ersten Lektionen, die man lernen sollte, wenn man mit Java anfängt.
 
Top