Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich hab mir grad folgenden Code als Übung aus einem Buch geschrieben:
Code:
public class KfzZulassung {
public static void main (String[] args){
print();
}
private String kennzeichen;
private String fahrzeughalter;
public static int x;
public String getKennzeichen()
{
return kennzeichen;
}
public String getFahrzeughalter()
{
return fahrzeughalter;
}
public void setKennzeichen(String i)
{
kennzeichen = i;
i = "hallo";
}
public void setFahrzeughalter(String i)
{
fahrzeughalter = i;
}
public static void print(){
System.out.println ("Kennzeichen: " + setKennzeichen ("K-123"));
System.out.println ("Halter: " + setFahrzeughalter("Hans Hansen"));
}
}
Das problem ist, dass mir Eclipse in der methode Print() die Daten"K-123" und "Hans Hansen" nicht erkennt und unterringelt. Weiß jemand wo ich den Fehler gemacht hab?
du versuchst einen String mit void zu konkatenieren und dass geht nicht.
Genauer: Die Methode setFahrzeugHalter(String) gibt void (nichts) zurück. Dieses void läßt sich aber nicht mit einem String verknüpfen. Gäbe die Methode setFahrzeugHalter() den gesetzten String wieder zurück (was sehr ungewöhnlich wäre), ginge es.
du versuchst einen String mit void zu konkatenieren und dass geht nicht.
Genauer: Die Methode setFahrzeugHalter(String) gibt void (nichts) zurück. Dieses void läßt sich aber nicht mit einem String verknüpfen. Gäbe die Methode setFahrzeugHalter() den gesetzten String wieder zurück (was sehr ungewöhnlich wäre), ginge es.
Erst wenn ich die zwei setter-Methoden und die zwei Member als Klassenmethoden bzw. Klassenmember ändere, sprich "static" mache, kann ich die Klasse kompilieren. So sieht das ganze bei mir dann aus:
Code:
public class KfzZulassung {
public static void main(String[] args) {
print();
}
private static String kennzeichen;
private static String fahrzeughalter;
public static int x;
public String getKennzeichen() {
return kennzeichen;
}
public String getFahrzeughalter() {
return fahrzeughalter;
}
public static String setKennzeichen(String i) {
kennzeichen = i;
i = "hallo";
return kennzeichen;
}
public static String setFahrzeughalter(String i) {
fahrzeughalter = i;
return i;
// es geht auch
// return fahrzeughalter ;
}
public static void print() {
System.out.println("Kennzeichen: " + setKennzeichen("K-123"));
System.out.println("Halter: " + setFahrzeughalter("Hans Hansen"));
}
}
Wobei ich auch denke, dass es sehr ungewöhnlich ist setter-Methoden zu machen, die den Wert wieder zurückgeben und getter-Methoden die gar nichts machen. Aber es soll ja eine Übung sein & vielleicht fehlt ja noch ein Teil des Programms :wink:
btw: die ganzen Bereinigungen bekomme ich über die Auto-Korrekturfunktion von Eclipse angeboten :wink:
private static String kennzeichen;
private static String fahrzeughalter;
public static int x;
public String getKennzeichen() {
return kennzeichen;
}
public String getFahrzeughalter() {
return fahrzeughalter;
}
public void setKennzeichen(String i) {
kennzeichen = i;
}
public void setFahrzeughalter(String i) {
fahrzeughalter = i;
}
public void print() {
//hier ist zwar nicht der sinnvollste Punkt dafür, aber aus Gründen der Übersichtlichkeit
setKennzeichen("K-123");
setFahrzeughalter("Hans Hansen");
System.out.println("Kennzeichen: " + getKennzeichen());
System.out.println("Halter: " + getFahrzeughalter);
}
}
Einfache Setter sollten nie was zurückgeben. Die Getter geben dir die Daten. Was du versucht hast ist schon ein Schritt in die Richtung "wie zerhaue ich mir meinen Code".
Zum Kommentar: Es wäre sinnvoll, wenn du in deiner zuerst eine KfzZulassung instanziierst.
Code:
public static void main(String[] args) {
KfzZulassung zulassung = new KfzZulassung();
Dann auf dieser die Setter und nachträglich das print aufrufst (dabei das print nicht statisch machen, schaut nicht so aus, als ob dir klar ist, was das statisch bedeutet).
Wobei ich auch denke, dass es sehr ungewöhnlich ist setter-Methoden zu machen, die den Wert wieder zurückgeben und getter-Methoden die gar nichts machen. Aber es soll ja eine Übung sein & vielleicht fehlt ja noch ein Teil des Programms
Sicher richtig - ich wollte das gegebene Beispiel nur nicht zu sehr ändern, deshalb die obige Lösung von mir. Aber so geht's natürlich auch - was vermutlich Deiner [Gast] Antwort entspricht:
Code:
public class KfzZulassung {
public static void main(String[] args) {
KfzZulassung myZulassung = new KfzZulassung();
myZulassung.setKennzeichen("K-123");
myZulassung.setFahrzeughalter("Hans Hansen");
myZulassung.print();
}
private String kennzeichen;
private String fahrzeughalter;
public static int x;
public String getKennzeichen() {
return kennzeichen;
}
public String getFahrzeughalter() {
return fahrzeughalter;
}
public void setKennzeichen(String i) {
this.kennzeichen = i;
}
public void setFahrzeughalter(String i) {
this.fahrzeughalter = i;
}
public void print() {
System.out.println("Kennzeichen: " + getKennzeichen());
System.out.println("Halter: " + getFahrzeughalter());
}
}
besser ... :?:
Gast hat gesagt.:
Dann auf dieser die Setter und nachträglich das print aufrufst (dabei das print nicht statisch machen, schaut nicht so aus, als ob dir klar ist, was das statisch bedeutet).