Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   Frage zu Java Code (https://www.tweakpc.de/forum/programmiersprachen/16896-frage-zu-java-code.html)

Kermit_1 10.07.2004 18:53

Frage zu Java Code
 
Hallo,

mein erstes Posting hier und gleich eine Frage :)

Ich lerne gerade etwas Java, komme aber dummerweise nicht weiter.
Folgendes "Programm" habe ich geschrieben. Ist zwar nur ein sehr kleines Programm, bin ja aber noch am lernen :

[code]class Mitarbeiter {
private String Name;
private int Dienstnummer;
private float Gehalt;
private String Abteilung;
private String Position;

public Mitarbeiter(String Name, int Dienstnummer, float Gehalt, String Abteilung) { // neuer Mitarbeiter wird angelegt
this.Name = Name;
this.Dienstnummer = Dienstnummer;
this.Gehalt = Gehalt;
this.Abteilung = Abteilung;
}

public void set_Gehalt_festBetrag(float Betrag) { // Erhöhung um festen Betrag
Gehalt += Betrag;
}

public void set_Gehalt_Prozent (float Prozent) { // Erhöhung um Prozent
Gehalt *= Prozent;
}

public void set_Abteilung (String Abt) { // neue Abteilung
Abteilung = Abt;
}
}


public class personalv {
public static void main (String[] args) {
Mitarbeiter[] Liste = new Mitarbeiter[10];
Liste[0] = new Mitarbeiter("mein_Name", 12345, 2000, 21);
}
}[/code]

Der JBuilder meckert die Zeile ganz untem in der Main-Methode an, wo ich ein neues Mitarbeiter-Objekt anlegen möchte. Aber irgendwie verstehen ic das nicht, da die Werte, die ich übergebe, doch zu den Parametern im Kontstruktor der Mitarbeiter-Methode passen.... oder etwa doch nicht?

Kann mir da mal bitte einer helfen?

Vielen Dank.


Kermit_1

_Smash_ 10.07.2004 20:59

du hast als parameter

public Mitarbeiter(int Dienstnummer, float Gehalt, String Abteilung)

übergibst aber

Liste[0] = new Mitarbeiter("mein_Name", 12345, 2000, 21);

da fehlt schonmal einen name-string und hinten vieleicht noch bei der 21 die gänsefüsschen, weils ja als string gehandhabt werden soll (bin ich aber nicht ganz sicher mit den gänsefüsschen)

Kermit_1 10.07.2004 21:27

Hallo,

ups, das "String Name" war eigentlich dabei. Ich hatte da nur gerade etwas rumgetestet, so dass es bei der hier veröffentlichten Version fehlte. In dem Code bei mir ist es => kann also leider nicht daran liegen.


Das mit dem Gänsefüsschen sagt mir so nix.
In einem anderen Programm (das ist noch viel komplexer mit Vererbung über zig Ebenen) funktioniert ein solcher Aufruf hier problemlos z.B.: [code] Fahrzeug t2 = new PKW("Renault Megane Scenic", "PKW", 90, 1600, 4, 94000);[/code]

_Smash_ 10.07.2004 21:35

hast du das mal ohne new operator versucht? weil dann legt er ja nen neues objekt an, aber das akkay ist ja schon ein feld von objekten, also willst du ein objekt mit einem objekt referenzieren.

Kermit_1 10.07.2004 21:44

Hi,

du meinst so?

[code] Mitarbeiter[] Liste = new Mitarbeiter[10];
Liste[0] = Mitarbeiter("mein_Name", 12345, 2000, 21); [/code]

bringt nix.

Alternativ habe ich es auch so:
[code] Mitarbeiter Liste = new Mitarbeiter("mein_Name", 12345, 2000, 21); [/code]
versucht, aber leider ebenfalls ohne Erfolg. :(

_Smash_ 10.07.2004 22:02

was sagt denn der compiler, bzw wie heisst die fehlermeldung?

hast du mal die verschmelzung vesucht, also

mitarbeiter liste[0]= blabla

Kermit_1 10.07.2004 22:31

Hallo,

[quote=_Smash_]da fehlt schonmal einen name-string und hinten vieleicht noch bei der 21 die gänsefüsschen, weils ja als string gehandhabt werden soll (bin ich aber nicht ganz sicher mit den gänsefüsschen)[/quote]

ohoh.... ich hätte wohl mal genauer hinschauen sollen, da tatsächlich die Gänsefüsschen gefehlt haben (klar, ist doch ein String). Ich Depp wollte den Wert eigentlich erst als int übergeben, habe den dann nachher aber doch als String implementiert, konnte daher nicht funktionieren.

Nochmal vielen Dank für die Hilfe... war da leider etwas blind auf den Augen. :oops:

_Smash_ 10.07.2004 22:55

[code]class Mitarbeiter {
private String Name;
private int Dienstnummer;
private float Gehalt;
private String Abteilung;
private String Position;



public void addMitarbeiter(String Name, int Dienstnummer, float Gehalt, String Abteilung) { // neuer Mitarbeiter wird angelegt
this.Name = Name;
this.Dienstnummer = Dienstnummer;
this.Gehalt = Gehalt;
this.Abteilung = Abteilung;
}

public void set_Gehalt_festBetrag(float Betrag) { // Erhöhung um festen Betrag
Gehalt += Betrag;
}

public void set_Gehalt_Prozent (float Prozent) { // Erhöhung um Prozent
Gehalt *= Prozent;
}

public void set_Abteilung (String Abt) { // neue Abteilung
Abteilung = Abt;
}
}


public class personalv {
public static void main (String[] args) {
Mitarbeiter[] Liste = new Mitarbeiter[10];
Mitarbeiter temp = new Mitarbeiter();
temp.addMitarbeiter("mein_Name", 12345, 2000,"21");
Liste[0]=temp;
}
}[/code]

so läuft das programm.

ist etwas anders, weil ich dachte da wäre ein fehler der keiner war.
naja egal. wenn deins jetzt läuft... ok


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.