Methoden/Klassen Problem

J

JavaPilot

Gast
Hallo :)
Ich bitte meine Unwissenheit zu entschuldigen; ich versuche sie mit halbwegs korrekter Orthographie wieder zu kompensieren.
Ich bereite mich auf eine Klausur vor. Dazu habe ich ein Programm geschrieben, welches den Umgang mit Klassen behandelt.
Eine Klasse Buch mit den Eigenschaften Titel und Seitenanzahl, soll hier erzeugt werden und anschließend soll ein Fenster erscheinen und den Titel des erzeugten Buches anzeigen.

Allerdings stimmt etwas an den Konstruktoren oder an der Ausgabe nicht, das Buch wird zwar erzeugt, aber bei der Ausgabe wird "null" ausgegeben.

Für einen erfahrenen Java-Programmierer sollte dies ein Kinderspiel sein, ich bedanke mich trotzdem innbrünstig !

LG


Java:
import java.io.*;
import javax.swing.*;


public class buch {

static int gesamtSeitenanzahl;
 String Titel;
 int Seitenanzahl;

   buch(int a, String b)
 {
   gesamtSeitenanzahl += a;
   int Seitenanzahl = a;
   String Titel = b;

 }

  public  String getTitel(buch Bla){
    return this.Titel;
	  
   }
  
  public  String getTitel(){
	    return  this.Titel;
		  
	   }






 public static void main(String[] args)   {
 String zeile, zeile2; 
  
 
  
  zeile = JOptionPane.showInputDialog ("Geben sie den Buchtitel ein." ); 
  zeile2 = JOptionPane.showInputDialog ("Geben sie die Seitenzahl ein." ); 
  int myint =  Integer.parseInt(zeile2);
    buch blabla = new buch(myint, zeile);
    
  
   
    JOptionPane.showMessageDialog (null, "s"+blabla.getTitel());
 } 


 }
 

Onkel Hatti

Bekanntes Mitglied
Zunächst: Klassen schreibt man Gross, Variablen klein. Du hast es grad genau umgekehrt.
Zum Problem:
Für die Klasse ist eine String Variable Titel deklariert worden (Zeile 8). Die wird im Konstruktor NICHT benutzt. Dort wird noch einmal eine String Variable Titel deklariert (Zeile 15) und mit einem Wert "gefüllt".
Nach Verlassen des Konstruktors ist die Variable aus der Zeile 15 nicht mehr gültig. Die Variable aus Zeile 8 hat ihren Wert (null) nie geändert.
Lösung.

In Zeile 15 statt String Title = b String weglassen.

Hatti
 
J

JavaPilot

Gast
Och, das war ja einfach ;D
Und dabei war ich schon wirklich kurz davor, aus dem Fenster zu springen !
Wenn ich so drüber nachdenke, ist das ein banaler Fehler. Gut, es geklärt zu haben.
Nun funktioniert das Programm :)

Dankeschön !

Vielleicht ist dieses Programm ja sogar eine Bereicherung, für andere, die soetwas auch programmieren wollen,
und noch nicht so weit waren.

Und jetzt haben wir eine (fast) richtige Musterlösung ! Ist das nicht prächtig : )

Also nochmals vielen Dank :D
 
T

Tomate_Salat

Gast
Hi

Java:
public class buch {

Klassen Groß schreiben => [c] public class Buch[/c]
Java:
static int gesamtSeitenanzahl;
 String Titel;
 int Seitenanzahl;

   buch(int a, String b)
 {
   gesamtSeitenanzahl += a;
   int Seitenanzahl = a;
   String Titel = b;

 }

1.) public buch(int seiten, String titel); - gescheite Titel erleichtern dir das leben. Da man Klassen groß schreibt, sollte man hier Buch groß schreiben
2) [c] gesamtSeitenanzahl += a[/c] gesamtSeitananzahl wurde nie initalisiert! setze gesamtSeitenanzahl bei der initalisierung auf 0 oder setze eine überprüfung ein
3) Variablen klein schreiben, Konstanten komplett groß
4) Modifer wie public, protected und private verwenden. Zwar wird meines wissens nach alles standart public markiert, wenn nichts dabei steht, aber darauf würde ich mich nicht verlassen.

Java:
  public  String getTitel(buch Bla){
    return this.Titel;
	  
   }

macht keinen Sinn. 2erlei, den Buch hat bereits diese Methode, aber wenn du das verwenden willst, warum auch immer:
Java:
public String getTitel(buch book)
{
    return book.getTitel();  // oder: return book.Titel;
}

Der rest scheint mal auf den ersten Blick ok zu sein. Kann sein dass ich was übersehen habe.

MFG

Tomate_Salat

Edit: Ja ich hab was übersehen, aber mein Vorposter hats ja bereits geschrieben ^^
 

Suinos

Bekanntes Mitglied
JavaPilot hat gesagt.:
[JAVA=19]
public String getTitel(buch Bla){
return this.Titel;

}

public String getTitel(){
return this.Titel;

}
[/code]
Was wolltest du hier machen?
Oder allgemeiner: Was soll dein Buch alles können?

---

Tomate_Salat hat gesagt.:
1.) [...] Da man Klassen groß schreibt, sollte man hier Buch groß schreiben
Damit keine Verwirring auftritt: Konstruktoren müssen genau gleich heissen wie die Klassen!

Tomate_Salat hat gesagt.:
2) [...] gesamtSeitananzahl wurde nie initalisiert!
Doch, Instanz- und Klassenvariablen werden automatisch auf ihre Standard-Werte gesetzt:
  • Primitive auf 0 / 0.0
  • Referenzen auf
    Code:
    null

Tomate_Salat hat gesagt.:
4) [...] Zwar wird meines wissens nach alles standart public markiert, wenn nichts dabei steht
Nein, alles ohne einen Modifizierer gilt als
Code:
default
, oder auch package-private genannt.
 
T

Tomate_Salat

Gast
Doch, Instanz- und Klassenvariablen werden automatisch auf ihre Standard-Werte gesetzt:
  • Primitive auf 0 / 0.0
  • Referenzen auf
    Code:
    null

Ah ok, trotzdem sollte man alleine wegen eines sauberen Programmierstiles seine Variablen initalisieren, wenn man Sie später modifizieren will.


Nein, alles ohne einen Modifizierer gilt als
Code:
default
, oder auch package-private genannt.

Der Modifer war mir gänzlich unbekannt, da ich immer die Modifizierer [c]public, private oder protected[/c] nutze und mein kleiner Test ergeben hat, dass er dem Public nahe kommt^^, wieder was dazugelernt.
 

The_S

Top Contributor
Ah ok, trotzdem sollte man alleine wegen eines sauberen Programmierstiles seine Variablen initalisieren, wenn man Sie später modifizieren will.

Naja ... ob ich jetzt

[c]private int iVar = 0;
private Object obj = null;[/c]

schreib, oder einfach

[c]private int iVar;
private Object obj;[/c]

... das nimmt sich nicht viel. Lesbar ist beides gleichermaßen. Imho. Was ich aber gar nicht mag, ist das Zuweisen von konkreten (also von den default-Werten abweichenden) Werten - vor allem wenn man außerhalb von Blöcken jeglicher Art neue Objekte erzeugt. Aber das ist ne rein subjektive Einschätzung.
 
T

Tomate_Salat

Gast
Naja ... ob ich jetzt

[c]private int iVar = 0;
private Object obj = null;[/c]

schreib, oder einfach

[c]private int iVar;
private Object obj;[/c]

... das nimmt sich nicht viel. Lesbar ist beides gleichermaßen.

Hab gegen beide Varianten nichts^^. Du hast mich nicht richtig verstanden: Ich finde man sollte seine Variable einmal initalisieren. Das kann ja auch später im Code passieren wenn man Sie braucht. Wenn ich jetzt z.B. meine Gui baue, gebe ich die Objekte an die ich brauche und initalisiere sie erst dann wenn ich sie brauche und lösche sie auch wieder, wenn Sie unnötig werden.
Also kurz und knapp: sowas finde ich hässlich:
Java:
int zahl;
zahl++;

Imho. Was ich aber gar nicht mag, ist das Zuweisen von konkreten (also von den default-Werten abweichenden) Werten - vor allem wenn man außerhalb von Blöcken jeglicher Art neue Objekte erzeugt. Aber das ist ne rein subjektive Einschätzung.

Du meinst sowas wie:

Java:
JComponent obj = new JLabel();

und dann im Konstruktor
Java:
obj = new JButton();

Falls ja, sind wir einer Meinung. Man kann ja mit dem Initalisieren warten, aber einmal sollte man es dann doch tun.

Mit freundlichen Grüßen

Tomate_Salat
 
J

JavaPilot

Gast
Danke nochmal an alle, die sich noch weitere Mühen gemacht haben, mir wertvolle Tipps zu geben : )

Wo ihr so enthusiastisch dabei seid, schließe ich noch schnell eine Frage an:

Ich hatte das Programm ursprünglich aufgespaltet, eine Klasse Buch, und eine Klasse Regal, in der sich die Mainmethode befand. Das heißt, die Klasse Regal enthielt neben der Mainmethode keine anderen anweisungen. So, dann wollte ich in der Mainmethode ein Objekt Buch erzeugen, allerdings meckerte dann der Compiler, die Klasse Buch hätte keinen Konstruktor für das Objekt Regal.

Da war ich dann erstmal verdutzt, ich hoffe ihr könnt mir da ohne Quellcode weiterhelfen, ich habe ihn leider nicht mehr.
Was gilt dabei zu beachten, wenn man von einer Klasse ein Objekt einer anderen Klasse erzeugen möchte ?
Die Methoden waren jedenfalls public, damit man sie von überall aufrufen konnte.

lg
JavaPilot
 
T

Tomate_Salat

Gast
Java:
Buch buch = new Buch();
?! Sofern du den konstruktor von [c]Buch[/c] nicht auf [c]private[/c] gesetzt hast, funktioniert die Geschichte normalerweise.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Problem mit Klassen und Methoden Java Basics - Anfänger-Themen 7
E 2 Klassen - Problem bei Methoden Java Basics - Anfänger-Themen 22
T Methoden / Klassen Problem Java Basics - Anfänger-Themen 11
frau-u Problem mit Klassen und Vererbung - benutzen von Methoden Java Basics - Anfänger-Themen 2
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
A Klassen und methoden Java Basics - Anfänger-Themen 15
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
C Methoden/Klassen Übergabewerte Java Basics - Anfänger-Themen 8
C Java Klassen/Methoden/Übergabeparameter Java Basics - Anfänger-Themen 4
C Methoden Auf Methoden anderer Klassen zugreifen Java Basics - Anfänger-Themen 10
J Teile der Funktionalität von Klassen in Methoden platzieren. Java Basics - Anfänger-Themen 3
M Methoden (in Klassen) Java Basics - Anfänger-Themen 4
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
arjoopy Methoden Methoden anderer Klassen Java Basics - Anfänger-Themen 6
L Klassen - Getter & Setter Methoden Java Basics - Anfänger-Themen 2
T Wie finde ich passende Java Klassen & Methoden? Java Basics - Anfänger-Themen 4
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
R Anfängerfrage zu Methoden in Vererbte Klassen Java Basics - Anfänger-Themen 2
C Methoden aus Klassen anzeigen lassen Java Basics - Anfänger-Themen 14
B Übungsaufgabe zu Klassen, Methoden ... Java Basics - Anfänger-Themen 2
K Methoden als Klassen benutzen Java Basics - Anfänger-Themen 42
K Vererbung Methoden in klassen auslagern und in mehreren Klassen verfügbar machen Java Basics - Anfänger-Themen 8
Pentalon Eclipse JUNO keine Vorschläge von Methoden bzw. Interfaces der eigenen Klassen Java Basics - Anfänger-Themen 5
B Klassen Java Taschenrechner mit Klassen und Methoden Java Basics - Anfänger-Themen 12
staxx6 ArrayList Methoden aufrufen bestimmter Klassen Java Basics - Anfänger-Themen 4
W Kontenverwaltungssystem (Klassen, Methoden) Java Basics - Anfänger-Themen 3
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
H Klassen und Methoden Java Basics - Anfänger-Themen 12
D Kapselung Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 7
A Klassen Methoden... Java Basics - Anfänger-Themen 15
I Objekte an andere Klassen/Methoden übergeben? Java Basics - Anfänger-Themen 5
T Vererbung und Zugriff auf Methoden von abgeleiteten Klassen Java Basics - Anfänger-Themen 2
T Kapselung: public-Methoden in protected-Klassen Java Basics - Anfänger-Themen 3
T OOP abstrakte klassen - methoden Java Basics - Anfänger-Themen 8
T Klassen, Objekte, Methoden Java Basics - Anfänger-Themen 9
U 2 Klassen mit get und set Methoden Java Basics - Anfänger-Themen 11
F Stilfrage: Klassen & Methoden Java Basics - Anfänger-Themen 15
V OOP Klassen Methoden Rückgabewert Java Basics - Anfänger-Themen 15
V OOP Klassen Methoden Java Basics - Anfänger-Themen 2
J Verständniss Frage zu Klassen, Objekte und Methoden Java Basics - Anfänger-Themen 8
L Methoden von anderen Klassen Aufrufen Java Basics - Anfänger-Themen 5
F Auf Methoden anderer Klassen zugreifen? Java Basics - Anfänger-Themen 8
G Abstrakte Klassen und Methoden Java Basics - Anfänger-Themen 3
D In Gui auf Methoden anderer Klassen zugreifen Java Basics - Anfänger-Themen 2
U Methoden aus Programmfremden Klassen nutzen Java Basics - Anfänger-Themen 2
M Klassen/Methoden API Java Basics - Anfänger-Themen 6
G ArraylList aus Klassen --> Methoden der Klassen aufrufen Java Basics - Anfänger-Themen 3
T Funktionen Plotter - Klassen/Methoden/Funktionen Java Basics - Anfänger-Themen 13
H Wie kann ich auf Methoden von anderen Klassen zugreifen? Java Basics - Anfänger-Themen 1
M Methoden von Klassen aufrufen Java Basics - Anfänger-Themen 4
A Methoden von externen Klassen aufrufen Java Basics - Anfänger-Themen 3
G Übertragen von Variablen auf andere klassen oder Methoden Java Basics - Anfänger-Themen 2
J Methoden aus fremden Klassen verwenden Java Basics - Anfänger-Themen 6
T Mehrere paint Methoden in unterschiedlichen Klassen Java Basics - Anfänger-Themen 7
K Methoden Klassen Bsp. Bankkonto Java Basics - Anfänger-Themen 4
M Klassen/Methoden Java Basics - Anfänger-Themen 10
L Zusammenhang Methoden, Klassen, Objekte, static - sun doku Java Basics - Anfänger-Themen 4
C Methoden von verschieden Klassen in eine Klasse reinpacken? Java Basics - Anfänger-Themen 4
G Methoden/Klassen elementare Probleme Java Basics - Anfänger-Themen 3
E Synchronized - Methoden in verschied. Klassen Java Basics - Anfänger-Themen 3
G dringende frage zu klassen und methoden ( klassendiagramm) Java Basics - Anfänger-Themen 19
L Klassen/Methoden/Objekt/Vererbung Java Basics - Anfänger-Themen 6
L Klassen und Methoden für Dateivergleiche. Java Basics - Anfänger-Themen 4
G Was sind Klassen, Objekte und Methoden? Java Basics - Anfänger-Themen 3
H Methoden aus anderen Klassen aufrufen Java Basics - Anfänger-Themen 3
K klassen/methoden Java Basics - Anfänger-Themen 4
M Zugriff auf Klassen/Methoden im Hauptverzeichnis Java Basics - Anfänger-Themen 2
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
L Rekursive Methoden Java Basics - Anfänger-Themen 14
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
Kotelettklopfer Methoden nicht aufrufbar Java Basics - Anfänger-Themen 34
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
S Methoden - Warum int wenn auch void? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben