Problem mit Zugriff auf Objekte von Klassen in der main

Bitte aktiviere JavaScript!
Ich habe in einem Projekt zwei public Klassen: ein Klasse "Prisma" und eine Klasse "Dreieck"
Wenn ich jetzt in der main ein Objekt Prisma erstelle, erhalte ich folgende Fehlermeldung:

Multiple markers at this line
- l cannot be resolved to a variable
- a cannot be resolved to a variable
- prismavolumen cannot be resolved to a
variable
- dreieckflaeche cannot be resolved to a
variable
- dreieckumfang cannot be resolved to a
variable
- prismaflaeche cannot be resolved to a
variable
- c cannot be resolved to a variable
- b cannot be resolved to a variable
Wenn ich den Umweg über eine dritte Klasse z.B. "PrismaRechner" gehe und darin ein Objekt Prisma erstelle funktioniert mein JavaCode?! Dann wiederrum ein Objekt PrismaRechner in der main und dann kann ich ein Objekt in der main erstellen? Offensichtlich habe ich eine Problem mit der main, welches ich nicht nachvollziehen kann?

Java:
Prisma p = new Prisma (a, b, c, dreieckumfang, dreieckflaeche, l, prismaflaeche, prismavolumen);
 
A

Anzeige




Schau mal hier —> (hier klicken)
Zeig dazu am Besten mal den Code der Klasse mit der main-Methode wenn der Fehler auftritt.
"Multiple markers at this line" kann durch verschiedene Fehler hervorgerufen werden.
 
Zeig dazu am Besten mal den Code der Klasse mit der main-Methode wenn der Fehler auftritt.
"Multiple markers at this line" kann durch verschiedene Fehler hervorgerufen werden.
Ist im Prinzip fast der gleiche JavaCode wie aus dem Thread von mir:

https://www.java-forum.org/thema/problem-mit-globalen-und-lokalen-variablen.181335/

außer das der Code der Klasse "PrismaRechner" nun nicht mehr darin ist, sonder ich diesen in die main stecken will, da ich die Klasse "PrismaRechner" als Unsinn ansehe (ohne den Konstruktor in "PrismaRechner" und die Methode PrismaRechner habe ich rausgenommen). Und dann kennt die main die Klasse Prisma nicht und z.B. die Textfelder. Ich habe da irgendwas nicht 100 Prozent verstanden bzw. kenne ich keinen besseren Weg oder irgendwas stimmt nicht.

Ich dachte z.B. eigentlich müsste es ja möglich sein das Projekt welches ich momentan nutze auch über Project-->Properties-->Java Build Path-->Projects-->Add Project bei Eclipse einzubinden und min. darüber die Klasse einzubinden. Funktioniert nicht.
 
Ich nehme an, du hast einfach die Variablen in deiner Main nicht deklariert. Aber ohne den ganzen Code ist es nur eine Vermutung
 
Ich nehme an, du hast einfach die Variablen in deiner Main nicht deklariert. Aber ohne den ganzen Code ist es nur eine Vermutung
Wenn bei dem Code:
Java:
p.prismaflaeche = ((Number) tprismaflaeche.getValue()).doubleValue();
das p. von dem Objekt Prisma rot markiert wird, sollte es daran nicht liegen, wenn ich vorher das Objekt Prisma erstellt habe. Außerdem hatte ich die Variablennamen in der Klammer auch mal weggelassen (wie bei dem PrismaRechner Objekt) und hatte auch eine Fehlermeldung.

Also die Aussage:
Das ganze ist allerdings auch noch ein bisschen komplizierter. Im Grunde will ich eine Methode aufrufen, die in einem Objekt definiert ist.
Dieses Objekt steckt allerdings wiederum in einem Array voller dieser Objekte.
Das Array mit den Objekten wird durch ein weiteres Objekt initiiert, das nur für diesen Zweck erschaffen wurde.
von
https://www.tutorials.de/threads/methode-aus-main-aufrufen.375471/

Trifft fast genau auf das zu was ich ab der main starte. Und nun habe ich quasi ein Objekt entfernt (Objekt "PrismaRechner" von der Klasse "PrismaRechner") aus dem ich die Methode PrismaRechner aufrufe. Die Methode "PrismaRechner" existiert in der neuen Version auch nicht mehr.
 
Zuletzt bearbeitet:
Code:
p.prismaflaeche = ((Number) tprismaflaeche.getValue()).doubleValue();
Also du möchtest einen double- Wert dem Attribut prismaflaeche von einem Prisma zuweisen.
Das bedeutet du hast prismaflaeche public gemacht. Ansonsten geht das so nicht.
 
Also du möchtest einen double- Wert dem Attribut prismaflaeche von einem Prisma zuweisen.
Das bedeutet du hast prismaflaeche public gemacht. Ansonsten geht das so nicht.
Die Entwicklungsumgebung wirft diese Fehlermeldung wenn ich die Variablen in den beiden Klassen public mache und aus dem Objekt entferne, wie ich es in der main vorher mit dem Objekt PrismaRechner gemacht habe.

Ich mein sehr fragwürdig ist, was mit einer Klasse funktioniert, funktioniert mit einer andern Klasse nicht (hier die main), nur weil es in der einen Klasse in einer Methode steht, worin das Objekt "PrismaRechner" erzeugt wird? Wie gesagt ich bleib dabei: es besteht ein Problem mit den Klassen auf die ich z.B. nicht aus der main mit einem jeweiligen Objekt zugreifen kann.

Multiple markers at this line
- The constructor Prisma() is undefined
- prismavolumen cannot be resolved to a
variable
- a cannot be resolved to a variable
Jetzt habe ich z.B. das Objekt p für Prisma nochmal in der Methode "rechnen" erstellt und habe dann auch ein Problem das dieses Objekt unbekannt ist in der main und das trotz public für die beiden Klassen. Dieser Versuch schließt dann z.B. aus, das es etwas mit meiner Deklaration von public der beiden Klassen Prisma und Dreieck zu tun haben sollte, da ich in der main offensichtlich kein Prisma und Dreieck Objekte erstellen kann, auf die ich zugreifen kann.
 
Zuletzt bearbeitet:
Die Entwicklungsumgebung wirft diese Fehlermeldung wenn ich die Variablen in den beiden Klassen public mache und aus dem Objekt entferne, wie ich es in der main vorher mit dem Objekt PrismaRechner gemacht habe.
Was meinst du mit "Klassen public mache und aus dem Objekt entfernen"?

Ich mein sehr fragwürdig ist, was mit einer Klasse funktioniert, funktioniert mit einer andern Klasse nicht, nur weil es in der einen Klasse in einer Methode steht, worin das Objekt "PrismaRechner" erzeugt wird? Wie gesagt ich bleib dabei: es besteht ein Problem mit den Klassen auf die ich z.B. nicht aus der main mit einem jeweiligen Objekt zugreifen kann.
Wie schon gesagt: ohne Code ist es nur raten, was da falsch ist ;)
 
Was meinst du mit "Klassen public mache und aus dem Objekt entfernen"?


Wie schon gesagt: ohne Code ist es nur raten, was da falsch ist ;)
statt
Java:
Prisma p = new Prisma (a, b, c, dreieckflaeche, dreieckumfang, l, prismaflaeche, prismavolumen);
Java:
Prisma p = new Prisma ();
versuchen, um zu sehen wo der Code nicht funktioniert.

Dabei erhalte ich dann die Fehlermeldung:
The constructor Prisma() ist undefined
Warum soll ich z.B. einen Konstruktor von Prisma in der main erstellen, wenn ich ein Objekt von Prisma erzeugen will? Verstehe ich nicht.
 
statt
Java:
Prisma p = new Prisma (a, b, c, dreieckflaeche, dreieckumfang, l, prismaflaeche, prismavolumen);
Java:
Prisma p = new Prisma ();
versuchen, um zu sehen wo der Code nicht funktioniert.

Dabei erhalte ich dann die Fehlermeldung:


Warum soll ich z.B. einen Konstruktor von Prisma in der main erstellen? Verstehe ich nicht.
Du rufst in deiner Main den Konstruktor Prisma () auf. Dieser existiert also nicht, genau das sagt die Fehlermeldung aus.

Wenn du einen Konstruktor aufrufen willst, muss es diesen auch geben. Und zwar nicht in der main, sondern in der Klasse, zu der er gehört.
 
Wenn du einen Konstruktor aufrufen willst, muss es diesen auch geben. Und zwar nicht in der main, sondern in der Klasse, zu der er gehört.
Nein. In der Klasse "Prisma" ist ein Konstruktor und der funktioniert auch.

Und die Fehlermeldung das der Konstruktor nicht definiert ist, erzeugt dieser Code:
Java:
Prisma p = new Prisma ();
 
Du hast in dem Forum mittlerweile zig Beiträge, und jedesmal diskutiert man deine, ich kann es nicht anders sagen, trivialen Probleme tagelang rum, weil du der Meinung bist, dass dein Code etwas besonderes ist und nicht gezeigt werden darf. Hör auf den Leuten die Zeit zu stehlen und liefere soviel Daten, dass sie dir helfen können oder lass es ganz sein.
Und nein, es ist nichts seltsamen an den Problemen, das sind typische Anfängerproble, die du schon längst gelöst hättest, wenn du den Code gepostet hättest. Wenn du nichts posten willst, dann nimm dir ein Buch in die Hand und fang mit Kapitel 1 an.
 
Dabei erhalte ich dann die Fehlermeldung:
Weil er vor dieser Änderung auch funktioniert hat. Da habe ich das Objekt (Prisma) p lediglich an einer anderen Stelle erzeugt.
Dein Hauptprobleme:
1) Dir fehlen Grundlagen zur Programmierung
2) Du glaubst der Fehler liegt nie bei dir sondern bei Java oder denen die Dir Ratschläge erteilen.

Faustregel beim Programmieren: Spukt Java einen Fehlermeldung aus, dann hast Du irgendwo einen Fehler gemacht.
Schau Dir die Fehlermeldung an und gehe Sie Schritt für Schritt durch.

Du rufst in deiner Main den Konstruktor Prisma () auf. Dieser existiert also nicht, genau das sagt die Fehlermeldung aus.
Hier wird Dir gesagt, dass Du in Deiner Klasse keinen Konstruktor ohne Parameter hast. Also schau Dir das einmal an.
Mein Hinweis auf die Zuweisung auf eine Klassenvariable von außen hast Du auch nicht aufgegriffen.
Des Weiteren ist der Konstruktor Deiner Klasse grundlegend falsch. ( Habe ich Dir auch bereits gesagt)

Code:
new Prisma (a, b, c, dreieckflaeche, dreieckumfang, l, prismaflaeche, prismavolumen);
z.B new Prisma( 20, 1000, 4, 0.5, 12, 10000000000, 2 );
Was soll da für ein Prisma entstehen.
Du benutzt unnötige Werte in Deinem Konstruktor. Nur die notwendigen Werte gewährleisten, dass so ein Objekt auch Sinn macht.
Code:
public class Prisma {
    private double hoehe;
    private Dreieck grundFlaeche;

    /**
     * Prisma meint hier: Aus einem rechtwinkeligem Dreieck konstruiert. Winkel der
     * Höhe auf die Fläche 90 Grad. Das bedeutet das Objekt ist durch die Angabe von
     * 2 Katheten und der Höhe eindeutig definiert. Die übrigen Größen ergeben sich
     * aus diesen Angaben. Ein "SCHWERER FEHLER" wäre ein Konstruktor, der z.B. den
     * Umfang und die Fläche des Dreiecks beinhaltet. Warum? (Umfang = 100) ,
     * (Fläche = 0.5) ist nicht lösbar wie unendlich viele ander Möglichkeiten auch.
     *
     * @param a
     *            Kathete des rechtwinkeligen Dreiecks.
     * @param b
     *            Kathete des rechtwinkeligen Dreiecks.
     * @param hoehe
     *            Höhe des Prismas Winkel auf die Fläche 90 Grad.
     */
    public Prisma(double a, double b, double hoehe) {
        grundFlaeche = new Dreieck(a, b);
        this.hoehe = hoehe;
    }

    /**
     * Konstruktor ohne Parameter. Der Standartwert für die Seiten und die Höhe ist
     * 1.
     */
    public Prisma() {
        this(1, 1, 1);
    }

    public double getOberflaeche() {
        return 2 * grundFlaeche.getFlaeche() + grundFlaeche.getA() * hoehe + grundFlaeche.getB() * hoehe
                + grundFlaeche.getA() * hoehe;
    }
}
Sobald Du bereit bist, einen Schritt zurückzugehen und einzuräumen, dass Du auch Fehler machst, kannst Du Dich weiterentwickeln. Die Hilfestellungen, die Dir hier von vielen sehr erfahrenen Benutzern geboten werden bringen Dich dann auch weiter.
;)
 
Du hast in dem Forum mittlerweile zig Beiträge, und jedesmal diskutiert man deine, ich kann es nicht anders sagen, trivialen Probleme tagelang rum, weil du der Meinung bist, dass dein Code etwas besonderes ist und nicht gezeigt werden darf. Hör auf den Leuten die Zeit zu stehlen und liefere soviel Daten, dass sie dir helfen können oder lass es ganz sein.
Und nein, es ist nichts seltsamen an den Problemen, das sind typische Anfängerproble, die du schon längst gelöst hättest, wenn du den Code gepostet hättest. Wenn du nichts posten willst, dann nimm dir ein Buch in die Hand und fang mit Kapitel 1 an.
Ich habe heute diverse Tipps die ich hier erhalten habe befolgt. Ich habe einen halben Tag damit verbracht JavaCode umzuschreiben der dann nicht funktioniert hat und ich während den vielen Fehlern die dadurch einstanden sind ich die Geduld kurzzeitig verloren habe, für JavaCode der vorher (nach meiner nicht perfekten Variante) funktioniert hat. Dann habe ich den neuen Code auskommentiert und bin wieder zu meiner Variante zurück gegangen.

Ich denke es gibt auch Fehler die nicht sofort verstanden werden.
 
Klingt jetzt ziemlich gemein, aber alle deiner Fehler sind eigentlich absolute Anfängerfehler, für die man hier mit ein bisschen Code in etwa 2min die Lösung hätte.
Fragen der Sorte "Es funktioniert nicht, was mach ich falsch" kann man eben kaum beantworten, du solltest dir schon überlegen, ob du Hilfe willst (die du vermutlich dem Eindruck aller hier nach durchaus gebrauchen kannst), dann solltest du vernünftig fragen, oder eben nicht.
 
Dein Hauptprobleme:
1) Dir fehlen Grundlagen zur Programmierung
2) Du glaubst der Fehler liegt nie bei dir sondern bei Java oder denen die Dir Ratschläge erteilen.
Sind eher Missverständnisse von Definitionen. Wenn mrBrown z.B. von einem Konstruktor schreibt meint er damit wahrscheinlich auch:
Java:
Prisma p = new Prisma ();
Ich habe diesen JavaCode bisher nicht als Konstruktor gesehen. Ist eigentlich eine Erzeugung von einem Objekt p der Klasse Prisma (so würde ich diese Zeile benennen). In meinem Java Buch habe ich heute zufällig gelesen, dass welche dabei auch von einem Konstruktor schreiben bzw. sprechen.
 
Wenn mrBrown z.B. von einem Konstruktor schreibt meint er damit wahrscheinlich auch:
Java:
Prisma p = new Prisma ();
Ich habe diesen JavaCode bisher nicht als Konstruktor gesehen. Ist eigentlich eine Erzeugung von einem Objekt p der Klasse Prisma (so würde ich diese Zeile benennen). In meinem Java Buch habe ich heute zufällig gelesen, dass welche dabei auch von einem Konstruktor schreiben bzw. sprechen.
Ne, das meine ich nicht als Konstruktor, das ist ein Konstruktor-Aufruf/Objekterzeugung/Whatever, aber der Konstruktor ist die "Methode" in der Klasse (in diesem Fall Prisma() in Prima).
 
A

Anzeige




Vielleicht hilft dir das hier weiter: (klicke hier)
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben