| 

.NET C# Java Javascript Exception

2
Hallo zusammen,

Es folgt mein main() programm...indem ich den entsprechenden Konstruktoren Variablen übergebe....

*******************************************************************************************

import javax.swing.*;


public class Studentenverwaltung {

public static void main(String[] args) {
studenten student1 = new studenten(1234567890, "Wellenbach", "Heinz", "Münster",
"Westenfeld", "12", 48268);

System.out.println(student1.matrikelnummer);
System.out.println(student1.name);
System.out.println(student1.vorname);
System.out.println(student1.adresse.hausnummer);


}
}
*********************************************************************************************
Ich habe noch 2 zusätzliche Klassen...
Studenten
Adresse
Jetzt möchte ich aber die Klasse Adresse in Studenten verwenden...bekomme es aber irgendwie nicht zum laufen...

Und zwar funktioniert der auskommentierte teil in der Klasse Studenten nicht...sondern nur wenn ich die Attribute aus der Klasse Adresse nochmals als Parameter in die Klasse Studenten einsetze...dies macht eigentlich keinen Sinn...denn wenn amn eine Klasse definiert muss man diese doch auch insgesamt einsetzen können also Parmeter und trotzdem auf die einzelne Attribute zugreifen zu können...aber höchstwahrscheinlich habe ich einen Gedankenfehler..???

Hier die beiden Klassen...

**********************************************************************************

class studenten {

int matrikelnummer;
String name;
String vorname;
Adresse adresse;

///**********Warum funktioniert dieser Teil nicht?????******************************
//public studenten(int matrikelnummer, String name, String vorname, Adresse adresse){
//
//this.matrikelnummer = matrikelnummer;
//this.name = name;
//this.vorname = vorname;
//this.adresse = adresse;
// }
public studenten(int matrikelnummer, String name, String vorname, String ort ,
String strasse, String hausnummer, int plz){

this.matrikelnummer = matrikelnummer;
this.name = name;
this.adresse = new Adresse(ort, strasse, hausnummer, plz);

}

}
*************************************************************************************

class Adresse {
String ort;
String strasse;
String hausnummer;
int plz;


public Adresse ( String ort, String strasse, String hausnummer, int plz) {
this.ort = ort;
this.strasse = strasse;
this.hausnummer = hausnummer;
this.plz = plz;
}

}
***************************************************************************************

Vielen dank im voraus für eure Unterstützung...
Snowleopard
News:
27.10.2015
1 Antwort
3
Ich glaub ich habs gefunden... Das nächste mal bitte eine etwas ausführlichere Problembeschreibung!

Du verwendest
new studenten(1234567890, "Wellenbach", "Heinz", "Münster",
"Westenfeld", "12", 48268);

und erwartest, dass der Compiler errät, dass er den Konstuktor
studenten(int matrikelnummer, String name, String vorname, Adresse adresse)
verwenden soll.

Das funktioniert nicht, weil der Java-Compiler (und die meisten anderen auch) den zu verwendenden Konstruktor (genau wie alle anderen Methoden) anhand der Anzahl, Typen und Reihenfolge der Argumente erkennt.

Für den Compiler sieht dein new-Aufruf so aus (int, String, String, String, String, Stgring, int) der Konstruktor mit Adress-Parameter sieht aber so aus (int, String, String, Adresse).

Du müsstest also den Aufruf eher so gestalten:
new studenten(1234567890, "Wellenbach", "Heinz", "Münster",
new Adresse("Westenfeld", "12", 48268));


Hier meine angepasste Version deines Codes:

package de.codekicker;

public class Studentenverwaltung {

public static void main(String[] args) {
Adresse addr = new Adresse("Münster", "Westenfeld", "12", 48268);

Studenten student1 = new Studenten(1234567890, "Wellenbach", "Heinz",
addr);

System.out.println(student1.matrikelnummer);
System.out.println(student1.name);
System.out.println(student1.vorname);
System.out.println(student1.adresse.strasse);
System.out.println(student1.adresse.hausnummer);
}
}


package de.codekicker;

public class Studenten {
int matrikelnummer;
String name;
String vorname;
Adresse adresse;

public Studenten(int matrikelnummer, String name, String vorname,
Adresse adresse) {
this.matrikelnummer = matrikelnummer;
this.name = name;
this.vorname = vorname;
this.adresse = adresse;
}

public Studenten(int matrikelnummer, String name, String vorname,
String ort, String strasse, String hausnummer, int plz) {

this.matrikelnummer = matrikelnummer;
this.name = name;
this.vorname = vorname;
this.adresse = new Adresse(ort, strasse, hausnummer, plz);

}
}


package de.codekicker;

public class Adresse {
String ort;
String strasse;
String hausnummer;
int plz;

public Adresse(String ort, String strasse, String hausnummer, int plz) {
this.ort = ort;
this.strasse = strasse;
this.hausnummer = hausnummer;
this.plz = plz;
}

}


Noch ein paar Anmerkungen:


  • Klassen-Namen sollten immer mit einem Großbuchstaben anfangen - ist Konvention in Java und erleichtert die Lesbarkeit des Codes
  • PLZ sollte als String gespeichert werden, weil bei int führende 0 ignoriert werden und damit 01067 für Dresden zu 1067 wird
  • Verwende bitte in Zukunft [code]..[/code] um Quellcode in deinen Posts zu markieren, das macht die Sache sehr viel lesbarer
  • Für den Einstieg in eine neue Sprache empfiehlt es sich immer mal ein Buch (quer) zu lesen. Für das knappe Studentenbudget hat sich der Reihnwerk-Verlag entschlossen sogar eins kostenlos ins Internet zu stellen: Java ist auch eine Insel - Die gedruckte Fassung macht sich übrigens gut im Bücherregal und lässt sich angenehmer lesen ;)
27.10.2015
phg 1,6k 3

Stelle deine Java-Frage jetzt!