Erste Schritte Listing aus Buch - wie geht das?

babuschka

Top Contributor
Hallo,

ich arbeite immer noch an einem Listing aus dem Buch "Java 7 for Dummies", Kapitel 8. Bin zwar schon ein Stück weiter am Lesen, hab das Listing aber noch nicht ganz verstanden ???:L und will keine Lücken lassen.
Ich werd also nicht drum rum kommen, hier mal den kompletten Code zu posten. Vieleicht kann mir einer hier etwas auf die Sprünge helfen. Also, eigtl. sind es zwei Listings mit je einer Klasse.

Das erste, die Klasse "Mitarbeiter":
Java:
import static java.lang.System.out;

public class Mitarbeiter
{
	private String name;
	private String funktion;
	
	public void setName(String nameIn) {
		name=nameIn;
	}
	public String getName() {
		return name;
	}
	public void setFunktion(String funktionIn) {
		funktion=funktionIn;
	}
	public String getFunktion() {
		return funktion;
	}
	
	public void zahleGehalt(double betrag) {
		out.printf("Zahlen Sie an %s",  name);
		out.printf(" (%s, args)", funktion);
		out.printf(" ***%, .2f Euro\n", betrag);
		
	}

}

Das zweite, die Klasse "Gehaltsabrechnung":
Java:
import java.util.Scanner;
import java.io.File;
import java.io.IOException;

class Gehaltsabrechnung {
	
	public static void main(String args[]) throws IOException {
		Scanner diskScanner = 
				new Scanner(new File("MitarbeiterInfo.txt"));
		
		for (int maNum=1; maNum<=3; maNum++) {
			bezahleMitarbeiter(diskScanner);
		}
	}

	static void bezahleMitarbeiter (Scanner aScanner) {
		Mitarbeiter einMa = new Mitarbeiter();
		
		einMa.setName(aScanner.nextLine());
		einMa.setFunktion(aScanner.nextLine());
		einMa.zahleGehalt(aScanner.nextDouble());
		aScanner.nextLine();
	}
}

Die Datei, die da referenziert wird, häng ich an, ist nicht groß, nur ein Beispiel halt.

Erst mal meine Fragen zum ersten: Was es tut, ist klar. Es werden einige Zugriffsmethoden definiert für die Eigenschaften der Klasse und eine Methode, die das alles ausgibt. In der Methode steckt meine Frage: Die Eigenschaften "name" und "funktion" sind klar, die existieren und können somit ausgegeben werden. Aber was ist mit "betrag"? Der kommt letztendlich aus einer Datei, die in dem zweiten Listing angegeben wird. Aber woher weiß das Programm, das die Zahl in der Datei die Variable "betrag" sein soll?

Dann hab ich natürlich auch eine Frage zum zweiten: Da wird eine Variable "diskScanner" initiiert, die auf die Datei verweist, klar. In der unteren Hälfte ist dann aber plötzlich von einer Scanner-Variable namens "aScanner" die Rede, auf die sich die Methode "bezahleMitarbeiter" bezieht. Meine Frage dazu: Wie weiß das Java-Programm, daß es sich bei dieser Scanner-Variable "aScanner" um die Datei handelt, die vormals von der Scanner-Variablen "diskScanner" referenziert wurde?

Vielen Dank im Voraus! :applaus:!
Gruß,

Javaswillerdenn
 

Anhänge

  • MitarbeiterInfo.txt
    101 Bytes · Aufrufe: 3
N

nillehammer

Gast
Erst mal meine Fragen zum ersten: Was es tut, ist klar. Es werden einige Zugriffsmethoden definiert für die Eigenschaften der Klasse und eine Methode, die das alles ausgibt. In der Methode steckt meine Frage: Die Eigenschaften "name" und "funktion" sind klar, die existieren und können somit ausgegeben werden. Aber was ist mit "betrag"? Der kommt letztendlich aus einer Datei, die in dem zweiten Listing angegeben wird. Aber woher weiß das Programm, das die Zahl in der Datei die Variable "betrag" sein soll?
[JAVA=21]
public void zahleGehalt(double betrag) {
out.printf("Zahlen Sie an %s", name);
out.printf(" (%s, args)", funktion);
out.printf(" ***%, .2f Euro\n", betrag);

}
[/code]
Die Methode zeigt den Betrag an, den Du ihr per Parameter übergibst. Woher dieser kommt, ist hier völlig egal. Damit der Betrag aus einer Datei kommt, musst Du ihn von dort laden und dann die Methode mit diesem Betrag aufrufen. Das passiert in Zeile 21 der Klasse Gehaltsabrechnung.
[JAVA=21]
einMa.zahleGehalt(aScanner.nextDouble()); // <-- Hier übergibst Du der Methode den aus der Datei gelesenen Betrag
[/code]

Meine Frage dazu: Wie weiß das Java-Programm, daß es sich bei dieser Scanner-Variable "aScanner" um die Datei handelt, die vormals von der Scanner-Variablen "diskScanner" referenziert wurde?
Weil Du sie in Zeile 12 der Klasse Gehaltsabrechnung genau mit diesem Scanner als Parameter aufrufst.
[JAVA=11]
for (int maNum=1; maNum<=3; maNum++) {
bezahleMitarbeiter(diskScanner); // <--- Hier wird der diskScanner an die Methode übergeben
}
[/code]
 

babuschka

Top Contributor
Hallo nillehammer,

also, der zweite Teil ist mir jetzt klar - die konkrete Variable "diskScanner" wird der Methode beim Aufruf übergeben. Wie die Variable vorher bezeichnet wird, ist ja egal - wenn ich es richtig sehe, würde es keinen Unterschied machen, wenn ich die Variable in der Definition der Methode bereits als "diskScanner" bezeichne. Ich werd das gleich mal probieren.
Ich muss mich noch dran gewöhnen, daß hier nicht wie bei den prozeduralen Sprachen alles schön der Reihe nach erfolgen muss.

Der erste Teil ist mir zur Hälfte klar - im zweiten Listing liest das Programm ja explizit eine double-Variable aus der Datei ein und es gibt nur eine in dem Programm (je Mitarbeiter), folglich muss das dann dieser Betrag sein. Aber - ich glaube, mein Verständnis hängt daran, daß die Variablen nicht explizit mit dem Wert befüllt werden, dass nirgends steht "Variable xy bekommt den jetzt eben eingelesenen Wert". Nach meinem Dafürhalten müsste die Mitarbeiter-Klasse zu dem Zweck noch eine Eigenschaft bekommen, nämlich die Eigenschaft "betrag", der dann im zweiten Listing mit einer set-Methode befüllt werden müsste, genau wie Name und Funktion. Stattdessen wird ja da direkt die Methode aufgerufen und der wird halt einfach dieser eingelesene Wert direkt übergeben.
Funktioniert das so, weil dieser Methode nur ein einzelner double-Wert übergeben wird, bei dem es sich folglich um den "betrag" handeln muss?

Danke!
Gruss,

Javaswillerdenn

P.S.: OK, die Bezeichnung der Scanner-Variable ist wirklich willkürlich, es funktioniert auch mit dem Namen "diskScanner" - scheint mir logischer.
 
Zuletzt bearbeitet von einem Moderator:

maestr0

Bekanntes Mitglied
Ich verstehe deine Problematik und du musst natürlich eine andere Denkweise verfolgen.

Im Prinzip kannst du die Methode auch ein bisschen komplizierter schreiben,jedoch entspricht es dem gleichem Ergebnis.


Java:
//oben im Klassenrumpf deklarierst du eine Variable "private double betrag;" 

public void zahleGehalt(double betragIn) {
        betrag = betragIn;
        out.printf("Zahlen Sie an %s",  name);
        out.printf(" (%s, args)", funktion);
        out.printf(" ***%, .2f Euro\n", betrag);
        
    }

Funktioniert das so, weil dieser Methode nur ein einzelner double-Wert übergeben wird, bei dem es sich folglich um den "betrag" handeln muss?
Somit ist die Antwort "JA"!
 

babuschka

Top Contributor
Hallo maestr0,

ja, die Vorgehensweise wär mir eingänglicher: Erst der Mitarbeiter-Klasse ein Element "Betrag" mitgeben, mitsamt einer set-Methode.
Dann würd ich bei der Deklaration der bezahleMitarbeiter-Methode in der Gehaltsabrechnung-Klasse noch eine Zeile einfügen, wo ich mit einem set-Befehl den double-Wert aus der Datei dem Element "betrag" zuweise.

Danke!
Gruß,

Javaswillerdenn
 
N

nillehammer

Gast
Aber - ich glaube, mein Verständnis hängt daran, daß die Variablen nicht explizit mit dem Wert befüllt werden, dass nirgends steht "Variable xy bekommt den jetzt eben eingelesenen Wert".
Das stimmt, eine solche Zeile fehlt. In Java musst Du nicht extra benannte Variablen deklarieren, um sie hin und her zu reichen. Du kannst auch direkt das Ergebnis von Methodenaufrufen übergeben:
Java:
// hier wird direkt das Ergebnis eines Methodenaufrufs übergeben,
// evtl. nicht gut lesbar
einMa.zahleGehalt(aScanner.nextDouble());
// darum geht auch das:
double zeilenBetrag = aScanner.nextDouble();
einMa.zahleGehalt(zeilenBetrag);
P.S.: OK, die Bezeichnung der Scanner-Variable ist wirklich willkürlich, es funktioniert auch mit dem Namen "diskScanner" - scheint mir logischer.
Ja, der Name ist willkürlich. Ich finde aber diskScanner nicht logischer. Du brauchst halt irgendeinen Scanner, ob der nun ein File, die Standardeingabe oder sonstwas scannt ist egal.
 

babuschka

Top Contributor
Danke nillehammer,

ich denke, jetzt hab ich dieses Codebeispiel soweit verstanden. Ich finde, in einem Buch für Einsteiger hätte man vieleicht die etwas umständlichere und einfacher verständliche Art wählen sollen, diesen Code zu schreiben. Naja, wenn ich mal ein eigenes Buch schreib...

Gruß,

Javaswillerdenn
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
frager2345 Java Klasse Buch verwalten Java Basics - Anfänger-Themen 0
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
J Datentypen Komm in einem Android Buch mit Java nicht weiter... Java Basics - Anfänger-Themen 7
S Java buch oder Kurse(udemy) Java Basics - Anfänger-Themen 4
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
N Das Java Buch von Daniel Lorig Java Basics - Anfänger-Themen 103
B VerständnisProblem mit Beispielaufgabe aus Buch Java Basics - Anfänger-Themen 1
V Buch:Programmieren lernen mit Java-Aufgaben zu schwer ? Java Basics - Anfänger-Themen 2
G Buch für Fortgeschrittene Java Basics - Anfänger-Themen 3
N Übungsaufgabe aus Java Buch bringt Fehler. Java Basics - Anfänger-Themen 10
R Operatoren Möglicher Fehler im Buch Programmieren lernen mit Java Java Basics - Anfänger-Themen 7
S Erste Schritte Suche nach einem guten JAVA-Buch (Definition im Thread) Java Basics - Anfänger-Themen 6
H Buch: Java lernen mit BlueJ Modulo-Operator Java Basics - Anfänger-Themen 16
F Übung: Ratespiel aus dem Buch Java von Kopf bis Fuß Java Basics - Anfänger-Themen 14
F Übung 99 Flaschen Bier aus dem Buch Java von Kopf bis Fuß Java Basics - Anfänger-Themen 10
E Compiler-Fehler Quelltext aus Buch erzeugt Fehler Java Basics - Anfänger-Themen 3
F OOP Java, ein Buch mit sieben Siegeln Java Basics - Anfänger-Themen 13
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
C Buch für Einsteiger gesucht Java Basics - Anfänger-Themen 2
Luk10 Buch für Swing/Awt/Graphics Java Basics - Anfänger-Themen 4
N überprüfungsschwierigkeit bei der klasse Buch Java Basics - Anfänger-Themen 6
M Alters berechnung aus Geburtsjahr aus dem Buch Java Basics - Anfänger-Themen 5
D Suche gutes Buch oder Tutorial Java Basics - Anfänger-Themen 3
K Java mit einem Buch lernen Java Basics - Anfänger-Themen 8
J Aufbauendes Java Buch Java Basics - Anfänger-Themen 8
W "Sprechen Sie Java?" suche dieses Buch gebraucht! Java Basics - Anfänger-Themen 11
V Buch empfehlung? Java Basics - Anfänger-Themen 10
A Am Buch lesen, nun brauch ich eure Hilfe um mir super() zu erklären Java Basics - Anfänger-Themen 4
D Testfragen aus dem Buch Java Basics - Anfänger-Themen 28
J Gutes Buch für Anfänger Java Basics - Anfänger-Themen 11
T Frage aus dem Buch JAVA ist auch eine Insel Java Basics - Anfänger-Themen 11
N Java lernen / Gutes Buch Java Basics - Anfänger-Themen 9
C Java Buch empfehlungen ? Java Basics - Anfänger-Themen 9
razwed4ik zum Beispiel aus Java Insel Buch Java Basics - Anfänger-Themen 7
S Hallo, ich hab hier ein Buch Java Basics - Anfänger-Themen 11
P Welches Buch ist für Einsteiger(fast) ohne Vorwissen passend Java Basics - Anfänger-Themen 7
T Code aus einem Buch geht nicht Java Basics - Anfänger-Themen 9
G Welches Java Buch kaufen? Java Basics - Anfänger-Themen 7
M Gutes einsteiger Buch? Java Basics - Anfänger-Themen 2
J Empfelenswertes Buch Java Basics - Anfänger-Themen 8
P Java beginner - Buch: Java- Einstieg für Anspruchsvolle Java Basics - Anfänger-Themen 6
A Erstes Buch durchgelesen, wie weiter vorgehen? Java Basics - Anfänger-Themen 8
G Probleme mit Buch! Java Basics - Anfänger-Themen 13
J Compiler + Gutes Buch Java Basics - Anfänger-Themen 2
K java buch empfehlung Java Basics - Anfänger-Themen 4
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
Ostkreuz wie geht der catch? Java Basics - Anfänger-Themen 3
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
P Installation JRE 8u321 startet, geht aber nicht weiter Java Basics - Anfänger-Themen 1
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
H Wie geht eigentlich Objektorientierung? Java Basics - Anfänger-Themen 14
M Methoden Wert einer Variable geht verloren? Java Basics - Anfänger-Themen 6
melisax Lower & Uppercase Beispielprogramm geht nicht Java Basics - Anfänger-Themen 3
MarcKKKK123 Wie geht das? Java Basics - Anfänger-Themen 1
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
N methodenaufruf for each geht nicht Java Basics - Anfänger-Themen 2
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
W App geht live und dann? Java Basics - Anfänger-Themen 9
P Geht es vielleicht viel kürzer? Java Basics - Anfänger-Themen 7
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
K Erste Schritte Programm geht aus Schleife, warum? Java Basics - Anfänger-Themen 2
S Geht das bei Java ? Java Basics - Anfänger-Themen 11
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
B OCR - Rechnungserkennung, wie geht das genau? Java Basics - Anfänger-Themen 59
CptK Klassen KeyListner geht nicht Java Basics - Anfänger-Themen 7
L Klassen Objekt aus einer Warteschlange in eine andere übergeben, geht nicht? Java Basics - Anfänger-Themen 6
K Armstrong Programm geht nur bis 1000, aber nicht weiter Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
amazinglife77 Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht Java Basics - Anfänger-Themen 4
V Erste Schritte Warum geht meine continue Anweisung nicht? Java Basics - Anfänger-Themen 8
MR._FIRE_Flower String.split("(") geht nicht Java Basics - Anfänger-Themen 4
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
K Klassen Nachträglich ein Objekt einem anderen zuweisen, geht das? Java Basics - Anfänger-Themen 2
S int addieren geht nicht Java Basics - Anfänger-Themen 13
L system.print.out geht nicht Java Basics - Anfänger-Themen 11
M Referenz geht bei Zwischenspeichern verloren (ArrayList) Java Basics - Anfänger-Themen 4
S Komma geht beim Schreiben ins csv verloren. Java Basics - Anfänger-Themen 6
M Arrays einspeichern geht nicht Java Basics - Anfänger-Themen 21
J BlueJ und import-Anweisungen, wie geht das? Java Basics - Anfänger-Themen 4
J Geht mit Java überhaupt was? Java Basics - Anfänger-Themen 13
J Debuggen - wie geht das? Java Basics - Anfänger-Themen 6
I erstelle Vorschaubild mit der lib PDF-Renderer und möchte danach Dateiname ändern -> geht aber nicht Java Basics - Anfänger-Themen 0
J Ausführen geht nicht Java Basics - Anfänger-Themen 19
G System.out.printf geht nicht Java Basics - Anfänger-Themen 6
E Erste Schritte [Noob] Warum geht meine For-Schleife nicht? Java Basics - Anfänger-Themen 2
I Java Code so gut es geht Kommentieren Java Basics - Anfänger-Themen 4
S Button "Berechnen" geht nicht Java Basics - Anfänger-Themen 3
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben