"über Parameter soll zeichenkette übergeben werde"

sweetie89

Mitglied
Hallo ich soll ein "Girokonto" programieren...
soweit mein Quelltext:
Java:
import java.util.* ;
public class Girokonto {
	private String kontonummer ;
	private double kontostand ;
	private String[] umsaetze ;
	private int anzahlUmsaetze;
	public void Girokonto ( String n) {
		n= "kontonummer";
		kontostand= 0.0;
		anzahlUmsaetze= 0;
		umsaetze= new String[50];
		} 
		private void umsatz (String m, double k) {
			
		}
}

jetzt soll ich in der Instanzmethode umsatz den ersten Parameter einer Zeichenkette übergeben ...doch leider ist mir überhaupt nicht klar, wie dieses funktioniert... kann mir das vllt. jemand erklären?
Liebe grüße
 
Zuletzt bearbeitet von einem Moderator:

XHelp

Top Contributor
1. Solltest du JAVA-Tags benutzen, wie es ROT auf der Seite steht.
2. Zeile xy sollte wohl eher
Code:
kontonummer=n;
heißen

Zu den eigentlichen Frage: vermutlich heißt es "als 1. Parameter eine Zeichenkette übergeben", dann ist es so wie es da steht richtig
 

myjday

Aktives Mitglied
Hallo Sweetie89,

ich versuchs mal:

Das war Deine Klasse. Ich habs ein bisschen verändert.

Java:
import java.util.* ;

public class Girokonto {

       private String kontonummer ;
       private double kontostand ;
       private String[] umsaetze ;
       private int anzahlUmsaetze;

       public Girokonto ( String n) {     // Ein Konstruktor hat keinen Rückgabewert --> void weg

          kontonummer = n;                // wird die Kontonummer übergeben?
                                                  //Zuweisung immer von rechts nach links
                                  
          kontostand= 0.0;
          anzahlUmsaetze= 0;
          umsaetze= new String[50];


       }

       private void umsatz (String m, double k) {
 
       }
}

jetzt soll ich in der Instanzmethode umsatz den ersten Parameter einer Zeichenkette übergeben ...doch leider ist mir überhaupt nicht klar, wie dieses funktioniert... kann mir das vllt. jemand erklären?
Liebe grüße

Du kannst im Konstruktor natürlich die Methode umsatz (Instanzmethoden sind Methoden, die
von einem Objekt der Klasse aufgerufen werden können) aufrufen.

Beispiel umsatz(umsaetze[0], irgendein-double-wert)

Was jetzt die Klasse konkret machen soll oder was die Klasse umsatz genau tut (wofür ist der 2. Parameter?) kann ich nicht erkennen.

Ich könnte mir denken, dass Du die einzelnen Umsätze auf den konstostand aufaddierst, aber
das ist ja nur meine Fantasie.

Vorschlag: Sag einfach konkret was Du vorhast, dann können wir besser helfen.

Gruß,
myjday
 

sweetie89

Mitglied
Hier ist meine genaue Aufgebanestellung, ich bin beim Aufgabenteil c...

Aufgabe 24 (Pflichtaufgabe) Zahlungsverkehr
Ein Girokonto ist ein Bankkonto, das zur Abwicklung des bargeldlosen Zahlungsverkehrs genutzt
wird. Insbesondere können Geldbeträge auf ein Girokonto eingezahlt und von einem Girokonto
auf ein anderes überwiesen werden.Schreiben Sie ein Java–Programm, welches den Zahlungsverkehr
zwischen zwei Girokonten simuliert. Gehen Sie dabei wie folgt vor:
(a) Erstellen Sie zunächst eine öffentliche Klasse namens Girokonto die ein Girokonto repräsentieren
soll. Definieren Sie für diese Klasse zunächst die folgenden Elemente: Eine
private Instanzvariable namens kontonummer vom Typ String, eine private Instanzvariable
namens kontostand vom Typ double, eine private Instanzvariable namens
umsaetze vom Typ String[] sowie eine private Instanzvariable anzahlUmsaetze vom
Typ int.
(b) Definieren Sie für die Klasse Girokonto einen öffentlichen Konstruktor mit einem formalen
Parametern namens kontonummer vom Typ String. Weisen Sie im Konstruktor den
Wert des Parameters der gleichnamigen Instanzvariable zu. Initialisieren Sie außerdem
die Instanzvariablen kontostand und anzahlUmsaetze mit Null. Initialisieren Sie die
Instanzvariable umsaetze mit einem Feld der Länge 50.
(c) Definieren Sie für die Klasse Girokonto eine private Instanzmethode namens umsatz
ohne Rückgabewert. Versehen Sie diese Methode mit zwei formalen Parametern vom Typ
String und double. Die Methode soll einen Umsatz auf dem Girokonto registrieren. Über
den ersten Parameter soll eine Zeichenkette übergeben werden, die die Art des Umsatzes
(z.B. „Einzahlung“, „Überweisung“) kennzeichnet. Über den zweiten Parameter soll der
umgesetzte Betrag übergeben werden. Speichern Sie eine Zeichenkette, welche die Art
des Umsatzes, den umgesetzten Betrag und den aktuellen Kontostand angibt, in der nächsten
freien Komponente des Felde umsaetze ab, und erhöhen Sie den Wert der Variable
anzahlUmsaetze um Eins. Definieren Sie außerdem eine öffentliche Instanzmethode
namens kontoauszug ohne formale Parameter und ohne Rückgabewert. Geben Sie in
dieser Methode alle Umsätze nacheinander auf der Konsole aus.
(d) Definieren Sie zwei private Instanzmethoden namens gutschreiben und belasten mit
jeweils einem formalen Parameter vom Typ double. Beide Methoden sollen einen Wert
vom Typ boolean zurückgeben. Die Methoden sollen prüfen, ob eine Gutschrift bzw. eine
Belastung auf dem Girokonto möglich ist, und diese ggf. durchführen. Der Betrag der auf
das Konto gutgeschrieben bzw. mit dem das Konto belastet werden soll, wird über den
Parameter übergeben. Die Methoden sollen true zurückgeben, falls die Gutschrift bzw.
die Belastung durchgeführt werden konnte, anderfalls false. Eine Gutschrift kann genau
dann durchgeführt werden, wenn der gutzuschreibende Betrag nichtnegativ ist. Eine Belastung
kann genau dann durchgeführt werden, wenn der Betrag mit dem das Girokonto
belastet werden soll nichtnegativ ist, und wenn er den aktuellen Kontostand nicht übersteigt.
(e) Definieren Sie eine öffentliche Instanzmethode namens einzahlen mit einem formalen
Parameter vom Typ double ohne Rückgabewert. Führen Sie in dieser Methode eine Einzahlung
auf das Girokonto durch. Der einzuzahlende Betrag wird dabei über den Parameter
an die Methode übergeben. Versuchen Sie, diesen Betrag auf das Konto gutzuschreiben.
Ist dies möglich, so registrieren Sie den Umsatz „Einzahlung“ auf dem Konto.
Verwenden Sie die Methoden gutschreiben und umsatz.
(f) Definieren Sie eine öffentliche Instanzmethode namens ueberweisen mit zwei formalen
Parametern vom Typ double und Girokonto ohne Rückgabewert. Führen Sie in
dieser Methode eine Überweisung vom aktuellen Girokonto auf das Girokonto durch, welches
über den zweiten Parameter an die Methode übergeben wurde (Empfängerkonto).
Der zu überweisende Betrag wird über den ersten Parameter an die Methode übergeben.
Versuchen Sie das aktuelle Konto mit diesem Betrag zu belasten und den Betrag
dem Empfängerkonto gutzuschreiben. Ist beides möglich, so registrieren Sie den Umsatz
„Überweisung an E“ auf dem aktuellen Konto und den Umsatz „Überweisung von K“ auf
dem Empfängerkonto. Hierbei sind K und E mit den Kontonummern des aktuellen bzw.
des Empfängerkontos zu ersetzen.
(g) Erstellen Sie eine öffentliche Klasse namens Zahlungsverkehr mit der main–Methode
des Programms. Erzeugen Sie in dieser Methode zwei Instanzen der Klasse Girokonto,
die zwei Girokonten mit den Kontonummern 01234 und 56789 repräsentieren. Speichern
Sie die beiden Instanzen in geeigneten Variablen ab. Führen Sie anschließend die folgenden
Aktionen durch
1. Zahlen Sie auf das erste Konto 100,00 EUR ein.
2. Überweisen Sie 40,00 EUR vom ersten auf das zweite Konto.
3. Zahlen Sie auf das zweite Konto 10,00 EUR ein.
4. Geben Sie die Kontoauszüge beider Konten auf der Konsole aus.



@myiday: also ein Konsrtuktor ist ohne Rückgabewert (also ohne double, int..etc.) aber auch ohne void?
weil wenn ich ja eine Instanzmethode ohne Rückgabe erstelle brauche ich void, oder hab ich da was falsch verstanden?
 

myjday

Aktives Mitglied
Du hast es richtig verstanden. Konstruktoren besitzen keinen Rückgabewert. Auch nicht void.
Aber Methoden, die nichts zurückliefern besitzen den Rückgabewert void.

Beispiel:

Java:
public void ausgabe(){
 
     System.out.println("Ich bin eine Ausgabe");
}

Gruß,
myjday
 

sweetie89

Mitglied
gut...danke...
aber mir ist immernoch nicht klar, was damit gemeint ist, dass ich über den ersten parameter eine zeichenkette übergeben soll noch wie das gehen soll...:(
 

Haave

Top Contributor
Java:
public void zeichenketteAusgeben(String zeichenkette) {
    System.out.println("Dies ist die übergebene Zeichenkette: "+zeichenkette);
}

Was genau ist dir unklar?
 

Final_Striker

Top Contributor
Java:
		private void umsatz (String m, double k) {
			
		}

Du musst in der Methode umsatz überprüfen ob es sich bei dem Parameter m um "Einzahlung" oder "Überweisung" handelt um dann den Parameterwert k den Kontostand hinzufügen oder abziehen.
 

sweetie89

Mitglied
@final striker...
des heißt ich mach ne if schleife um zu prüfen ob einzahlung oder auszahlung und je nachdem zieh ich m dann von ka ab oder addier es drauf?
 

Haave

Top Contributor
Du musst in der Methode umsatz überprüfen ob es sich bei dem Parameter m um "Einzahlung" oder "Überweisung" handelt um dann den Parameterwert k den Kontostand hinzufügen oder abziehen.
Und ehe deshalb gleich die nächste Frage kommt: Strings vergleicht man mit equals(), nicht mit ==.

Java:
private void umsatz (String m, double k) {
    if(m.equalsIgnoreCase("Überweisung") { /*mach irgendwas*/ } //ignore case für Nichtunterscheidung von Groß- und Kleinschreibung
    else if(m.equalsIgnoreCase("Einzahlung") { /*mach irgendwas anderes*/ }
}
 

sweetie89

Mitglied
Java:
	private void umsatz (String m, double k) {
		Scanner sc= new Scanner (System.in);
		double umgesetzterBetrag,a;
		a=sc.nextDouble();
		umgesetzterBetrag = a;
		
			if(m.equals("Ueberweisung")){
			k + umgesetzterBetrag = kontostand;
		}
		if(m.equals("Einzahlung")); {
			k - umgesetzterBetrag = kontostand;
		}	
		}
und jetzt bekomm ich folgende fehlermeldung:

C:\java\Girokonto.java:23: unexpected type

required: variable

found : value

k - umgesetzterBetrag = kontostand;

^
... was hab ich den nun schon wieder falsch gemacht?
 

sweetie89

Mitglied
... das gehört noch an den anfang der fehlermeldung:
C:\java\Girokonto.java:20: unexpected type

required: variable

found : value

k + umgesetzterBetrag = kontostand;

^

...
*ratlos*
 

sweetie89

Mitglied
"Speichern Sie eine Zeichenkette, welche die Art
des Umsatzes, den umgesetzten Betrag und den aktuellen Kontostand angibt, in der nächsten
freien Komponente des Felde umsaetze ab, und erhöhen Sie den Wert der Variable
anzahlUmsaetze um Eins"
... also soll ich hier jetzt nochmal ein string erstellen, welcher all dies beinhaltet, oder soll ich eine instanzmethode erstellen, die zeichenkette heißt und darin des alles definieren?
 

XHelp

Top Contributor
Kannst auch normal den String erstellen. Mach es erstmal so, dass es lauffähig ist: was besser ist oder nicht, soll erstmal egal sein.
 

sweetie89

Mitglied
quasi so:
Java:
String[][][] s = new String[][][]
ne oder?
... also n String ist ja zum beispiel: " Ich Programmiere ein Programm"
aber wie ich da 3 komponenten reindefinieren kann ist mir unklar...
 

Final_Striker

Top Contributor
Du musst dir einen String zusammen bauen, so das er beim Ausgeben z.B folgendermaßen aussieht:

...
Einzahlung - Betrag: 100€ Kontostand: 2100€

oder

Überweisung - Betrag: 30€ Kontostand: 2070€



Strings kann man mit dem "+" Operator zusammenbauen. z.B:

int alter = 5;
String str = "Hallo, ich bin " + alter + " Jahre alt.";

Ausgabe wäre dann -> Hallo ich bin 5 Jahre alt.
 

Ilyustar

Mitglied
Da ich bald mein Abi im Fach Wirtschaftsinformatik mache, hab ich mich auch mal der Aufgabe angenommen und versucht sie zu lösen:
Java:
public class Girokonto {
	
	private String kontonummer;
	private double kontostand = 0;
	private String[] umsaetze = new String[50];
	private int anzahlUmsaetze = 0;
	
	public Girokonto(String kontonummer){
		this.kontonummer = kontonummer;
	}
	
	public double getKontostand(){
		return kontostand;
	}
	
	private void umsatz(String a, double b){
		String s = "Art des Umsatzes: ";
		s += a;
		s += " Betrag:"+String.valueOf(b);
		if(a.equals("Einzahlung")){
			s += " Kontostand: " + String.valueOf((getKontostand() + b)); 
		}else if(a.equals("Überweisung")){
			s += " Kontostand: " + String.valueOf((getKontostand() - b));	
		}else if(a.equals("Auszahlung")){
			s += " Kontostand: " + String.valueOf((getKontostand() - b));
		}else{
			s += " Kontostand: 0 - Bank wurd überfallen";
		}
		
		umsaetze[0] = s;
		anzahlUmsaetze += 1;
		
	}
	
	public void kontoauszug(){
		for(int i = 0; i < umsaetze.length; i++){
			System.out.println(umsaetze[i]);
		}
	}
	

}

Was zu sagen ist:
- Ich würde die Attribute nicht im Konstruktor initialisieren sondern so wie oben, was wäre der Unterschied?
- In der Aufgabe heisst es "Über den ersten Parameter soll eine Zeichenkette übergeben werden, die die Art des Umsatzes (z.B. „Einzahlung“, „Überweisung“) kennzeichnet." d.h. es gibt noch andere, ich wäre mir da nicht sicher was gefragt ist, bzw. ist nicht angegeben das der User nur Einzahlung und Überweisung benutzen kann, wie wäre das zu handhaben? Wäre es nicht schlauer dann eine if-Abfrage zu erstellen die prüft ob der 2. Parameter positiv oder negativ wäre?
- Wir haben im Unterricht noch keine Array's behandelt, daher weiss ich nicht umbedingt genau mit ihnen umzugehen (z.B. den nächsten Wert zuzuweisen)

Habe ich irgendwelche Fehler gemacht?
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
- Ich würde die Attribute nicht im Konstruktor initialisieren sondern so wie oben, was wäre der Unterschied?
Keiner - du kannst mit dem Debugger durch den Konstruktor steppen und siehst wann die Zeilen ausgeführt werden. Es macht Sinn die Initialisierung im Konstruktor zu machen, wenn du mehr als einen Konstruktor hast und die unterschiedliche Werte setzen.


- Wir haben im Unterricht noch keine Array's behandelt, daher weiss ich nicht unbedingt genau mit ihnen umzugehen (z.B. den nächsten Wert zuzuweisen)

Du musst selbst wissen welches der index des letzten zugewiesenen Wertes ist und den Index erhöhen bevor du einen neuen Wert zuweist

Ein einfaches Beispiel (ein Schutz gegen Array-Überlauf! :) )
Java:
	private static String[] stringArr = new String[10];
	private static int leeresFeld = 0;
	
	public static void speichere(String str) {
		stringArr[leeresFeld] = str;
		leeresFeld += 1;
	}
	public static void print(String[] arr) {
		for(int i=0; i<arr.length; i++) {
			if (arr[i]!=null)
				System.out.print(arr[i] + " ");
		}
	}

	public static void main(String[] args) {
		speichere("Das");
		speichere("ist");
		speichere("ein");
		speichere("Satz");
		print(stringArr);
	}
 
Zuletzt bearbeitet:

Ilyustar

Mitglied
Danke, alles geklärt, wenn man die Aufgabe weiter liest sieht man, dass nur Einzahlung und Überweisung gebraucht werden und das Weiterdenken nicht von nöten ist :p

Ilyu
 

Andi_CH

Top Contributor
... und das Weiterdenken nicht von nöten ist ... :D

So lustig wie das tönt ist es doch sehr wichtig. Nicht mehr machen als gefordert ist - es wird sonst zu teuer.

Es gibt übrigens elegantere Datenstrukturen als Arrays, aber das ist ja im Moment auch kein Thema.
 

Ilyustar

Mitglied
... und das Weiterdenken nicht von nöten ist ... :D

So lustig wie das tönt ist es doch sehr wichtig. Nicht mehr machen als gefordert ist - es wird sonst zu teuer.

Es gibt übrigens elegantere Datenstrukturen als Arrays, aber das ist ja im Moment auch kein Thema.
So war das nicht gemeint, Ich beziehe das NUR auf meine Abiturprüfung, denn da werde ich nur mehr machen als gefordert wenn ich mir a.) sicher bin das es richtig ist und b.) ich genügend Zeit zur verfügung habe.
 

Andi_CH

Top Contributor
Ich hab es sicher richtig verstanden - sobald es um Geld geht ist das wirklich wichtig.
Wenn es um Prüfungen geht übrigens auch - du kannst du Aufgabe 1 super genial lösen - wenn du für die 2 keine Zeit mehr hast ... Pech.

Also das war gar nicht abschätzig gemeint
 

sweetie89

Mitglied
@ilyustar... was genau bedeutet
Java:
   s += " Betrag:"+String.valueOf(b);

[{JAVA]
also String.valueOF(b)...was bedeutet das und macht es?
 

sweetie89

Mitglied
bis jetzt habe ich
Java:
import java.util.* ;
public class Girokonto {
	private String kontonummer ;
	private double kontostand ;
	private String[] umsaetze ;
	private int anzahlUmsaetze;
	public Girokonto ( String n) {
		kontonummer = n;
		kontostand= 0.0;
		anzahlUmsaetze= 0;
		umsaetze= new String[50];
		} 
		private void umsatz (String m, double k) {
		Scanner sc= new Scanner (System.in);
		double umgesetzterBetrag,a;
		a=sc.nextDouble();
		umgesetzterBetrag = a;
		
			if(m.equals("Ueberweisung")){
			kontostand = k + umgesetzterBetrag;
			}
			if(m.equals("Einzahlung")) {
			 kontostand = k-umgesetzterBetrag;
				}	
		
		String s= "art" ;
		s+= umgesetzterBetrag;
		s += kontostand;
		umsaetze[0] = s;
		anzahlUmsaetze += 1;
	}
		
		public void kontoauszug () {
		for ( int i = 0;i< umsaetze.length ; i++){
			System.out.println (umsaetze(i));
			}	
		}
		
}
Jetzt hab ich aber leider folgende fehlermeldung:

C:\java\Girokonto.java:35: cannot find symbol

symbol : method umsaetze(int)

location: class Girokonto

System.out.println (umsaetze(i));

^
... was ist denn jetzt wieder falsch?
 

Final_Striker

Top Contributor
[c]String str = String.valueOf(b);[/c]

Damit wird b in einen String umgewandelt. Wobei das in dem Fall unnötig ist, das Java das sowieso implizit macht.

Außerdem solltest du seine Methode umsatz nicht übernehmen, sie ist nicht korrekt.

Edit:

Auf ein Array greift man mit [] und nicht mit () zu.

[c]System.out.println (umsaetze(i));[/c]

Edit2:

Außerdem brauchst du keinen Scanner in deiner Methode.
Du sollst die Parameter m und k verwenden.
 
Zuletzt bearbeitet:

sweetie89

Mitglied
also so:
Java:
	private void umsatz (String m, double k) {
			if(m.equals("Ueberweisung")){
			kontostand = kontostand + k ;
			}
			if(m.equals("Einzahlung")) {
			 kontostand = kontostand -k;
				}	
		
		String s= "art" ;
		s+= "umgesetzterBetrag";
		s += kontostand;
		umsaetze[0] = s;
		anzahlUmsaetze += 1;
	}
		
		public void kontoauszug () {
		for ( int i = 0;i< umsaetze.length ; i++){
			System.out.println (umsaetze[i]);
			}	
		}
 

Final_Striker

Top Contributor
Sieht schon mal nicht schlecht aus.
Java:
	private void umsatz(String m, double k) {
		if (m.equals("Ueberweisung")) {
			kontostand = kontostand + k;
		}
		if (m.equals("Einzahlung")) {
			kontostand = kontostand - k;
		}
		
		// Was passiert wenn man keines der beden Strings eingibt???
		
		String s = "art";
		s += "umgesetzterBetrag";
		s += kontostand;
		umsaetze[0] = s;  	// <-- Hier schreibst du IMMER in das Array an der Stelle 0
							// und überschreibst damit deine alten Umsätze
		anzahlUmsaetze += 1;
	}

	public void kontoauszug() {
		for (int i = 0; i < umsaetze.length; i++) 	//<-- Schleife läuft von 0 bis umsaetze.length = 50
		{											//Was ist aber, wenn du nur 3 Umsätze gemacht hast?
			System.out.println(umsaetze[i]);		// Dann bekommst du hier einen Fehler
		}
	}
 

myjday

Aktives Mitglied
dann viel Spaß damit

Java:
package zahlungsverkehr;

public class Girokonto {

	private String kontonummer;
	private double kontostand;
	
	private String[] umsaetze;
	private int anzahlUmsaetze;
	
	public Girokonto(String kontonummer){
		
		this.kontonummer    = kontonummer;
		this.kontostand     = 0;
		anzahlUmsaetze = 0;
		
		umsaetze = new String[50];
	}
	
	private void umsatz(String t, double d){
		
		kontostand = kontostand + d;
		
		umsaetze[anzahlUmsaetze] = t + ", " + String.valueOf(d) + ", " + String.valueOf(kontostand);
		
		anzahlUmsaetze = anzahlUmsaetze + 1;
	}
	
	private boolean gutschreiben(double d){
		
		if( d > 0 ){
						
			return true;
		}
		
		return false;
	}
	
	private boolean belasten(double d){
		
		if( kontostand - d > 0 ){	
			
			return true;
		}
		
		return false;
	}
	
	public void einzahlen(double t){
		
		if(gutschreiben(t)==true){
			
			umsatz("Einzahlung", t);
		}
	}
	
	public void ueberweisen(double t, Girokonto g){
		
		if(this.belasten(t)==true){
			
			this.umsatz("Überweisung an " + g.kontonummer, -t);
			g.umsatz("Überweisung von " + this.kontonummer , t);			
		}
		
	}
	
	public void kontoauszug(){
		
		for(int i=0; i<anzahlUmsaetze; i++){
			
			System.out.println(umsaetze[i]);
		}	
	}
}

.. mit der geforderten Klasse Zahlungsverkehr

Java:
package zahlungsverkehr;

public class Zahlungsverkehr {

	public static void main(String[] args) {

		Girokonto g1 = new Girokonto("01234");
		Girokonto g2 = new Girokonto("56789");
		
		g1.einzahlen(100);
		g1.ueberweisen(40, g2);
		
		g2.einzahlen(10);
				
		g1.kontoauszug();
		g2.kontoauszug();
	}
}

Gruß,
myjday
 

sweetie89

Mitglied
Java:
private void umsatz (String m, double k) {
			if(m.equals("Ueberweisung")){
			kontostand = kontostand + k ;
			}
			if(m.equals("Einzahlung")) {
			 kontostand = kontostand -k;
				}	
			else {
			kontostand= kontostand+ 0;
			}
		
		String s= "art" ;
		s+= "umgesetzterBetrag";
		s += kontostand;
		umsaetze[0] = s; // soll an diese stelle dann i oder wie löse ich das Problem?
		anzahlUmsaetze += 1;
	}
		
		public void kontoauszug () {
		for ( int i = 0;i< anzahlUmsaetze ; i++){
			System.out.println (umsaetze[i]);
			}	
		}
	private boolean gutschreiben (double a){
		
		}
		private boolean belasten (double b){
			
		}
}
 

myjday

Aktives Mitglied
um die eindeutige Zuordnung zu gewährleisten.

Deine Klasse Girokonto besitzt die Eigenschaft (zum Verständnis Variable ) kontonummer
Das bedeutet: Wenn Du ein Objekt vom Typ Girokonto erzeugst kannst Du in der Speicherstelle
kontonummer Deines Objektes eine kontonummer "12345" ablegen.

In Deinem Konstruktor wird im Moment des Aufrufens ein lokaler Parameter ebenfalls mit Namen
kontonummer angelegt. Dieser hat aber speichertechnisch nichts mit der Eigenschaft Deines
Objektes vom Typ Girokonto zu tun. Der lokale Parameter kontonummer dient nur zum Zwischenspeicher
und ist nach Abarbeiten des Konstruktors nicht mehr vorhanden.

Um die beiden namensgleichen Speicherstellen kontonummer auseinander zu halten kann man
Eigenschaften, die zu dem aktuell verwendeten Objekt gehören mit this kennzeichnen.
Oder anders formuliert: this ist immer eine Referenz auf das aktuell verwendete Objekt.

Beispiel 1:

Java:
public Girokonto(String kontonummer){
		
	this.kontonummer    = kontonummer;
}

Weise den Wert in dem lokalen Parameter kontonummer der Speicherstelle kontonummer zu,
die zum aktuell verwendeten Objekt gehört - also dem für welches der Konstruktor aufgerufen wurde.

Beispiel 2:

Java:
public void ueberweisen(double t, Girokonto g){
		
	if(this.belasten(t)==true){
			
	     this.umsatz("Überweisung an " + g.kontonummer, -t);
	     g.umsatz("Überweisung von " + this.kontonummer , t);			
	}
}

Wenn Du das aktuell verwendete girokonto belasten kannst, dann rufe für das aktuell
verwendete Objekt die Methode umsatz auf.
Rufe danach die Methode umsatz für das Objekt g auf.

Gruß,
myjday
 
Zuletzt bearbeitet:

sweetie89

Mitglied
...wenn mein Konstruktor ein Parameter einer neuen Instanzmethode sein soll... was genau schreib ich dann in die runden Klammern?
Nur den Namen meines Konstruktors??
 

sweetie89

Mitglied
wenn ich eine weiter klasse erstellen muss, dann muss ich dies doch in einer neuen datei abspeichern, aber im selben ordner wie die, welche ich in der Klasse verwenden will?!?
 

sweetie89

Mitglied
ich hab jetzt ...
Java:
import java.util.* ;
public class Girokonto {
	private String kontonummer ;
	private double kontostand ;
	private String[] umsaetze ;
	private int anzahlUmsaetze;
	public Girokonto ( String n) {
		kontonummer = n;
		kontostand= 0.0;
		anzahlUmsaetze= 0;
		umsaetze= new String[50];
		} 
	private void umsatz (String m, double k) {
		if(m.equals("Ueberweisung")){
			this.kontostand = kontostand + k ;
		}
		if(m.equals("Einzahlung")) {
			this.kontostand = kontostand -k;
			}	
		else {
			this.kontostand= kontostand+ 0;
		}
		String s= "art" ;
		s+= "umgesetzterBetrag";
		s += kontostand;
		umsaetze[0] = s;
		this.anzahlUmsaetze += 1;
		}
		
	public void kontoauszug () {
		for ( int i = 0;i< anzahlUmsaetze ; i++){
			System.out.println (umsaetze[i]);
		}	
	}
	private boolean gutschreiben (double a){
		if ( a > 0) {
			return true;
		}
		else {
			return false;
		}
	}
	private boolean belasten (double b){
		if (this.kontostand - b >0 && b > 0 ) {
				return true;
		}
		else {
				return false;
		}
	}
	public void einzahlen (double c) {
		if ( this.gutschreiben(c)== true ) {
			this.umsatz("Einzahlung",c);
			}		
	}
	public void ueberweisen (double d, Girokonto e) {
		if ( this.belasten(d) == true ) {
			this.umsatz("Überweisung an "+ e.kontonummer ,-d) ;
			e.umsatz("Überweisung von " + this.kontonummer, d) ; 	
		}
	}
	
}

und den zahlungsverkehr
Java:
import java.util.*;
public class Zahlungsverkehr {
	public static void main (String[]args) {
		Girokonto f, h;
		f= new Girokonto ("01234");
		h = new Girokonto ("56789");
		f.einzahlen(100);
		f.ueberweisen(40, h);
		h.einzahlen(10);
		f.kontoauszug();
		h.kontoauszug();
	}
}

und dann wird mir ausgegeben...:
artumgesetzterBetrag-100.0
artumgesetzterBetrag-10.0


hmmm..irgendwas is wohl noch falsch...
 

Haave

Top Contributor
und dann wird mir ausgegeben...:
artumgesetzterBetrag-100.0
artumgesetzterBetrag-10.0


hmmm..irgendwas is wohl noch falsch...
Ob die Ausgabe falsch oder richtig ist, kannst nur du beurteilen. Immer schreiben, was du erwartet hast und was tatsächlich rausgekommen ist. Worum geht's denn jetzt? Falsche Werte in der Ausgabe? Fehlende Leerzeichen?

Wenn's nur die Leerzeichen sind, schreib sie in die Strings dazu:
Java:
String s= "art " ;
s+= "umgesetzter Betrag: ";
s += kontostand;
 

Haave

Top Contributor
Was hast du denn mit
Java:
String s= "art";
vor? Beschreib doch mal, wie du dir das vorstellst.
 

myjday

Aktives Mitglied
Keine Frage: Wenn Du etwas einbezahlst - warum ziehst Du diesen Betrag dann von Deinem Kontostand ab?

Java:
    if(m.equals("Einzahlung")) {

            this.kontostand = kontostand - k;
    }   
    else {
    
        this.kontostand= kontostand + 0;
    }

Gruß,
myjday
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
Z Methoden über Parameter aufrufen Java Basics - Anfänger-Themen 6
richis-fragen GlassPane über JScrollPane legen Java Basics - Anfänger-Themen 6
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
B großzügiges Pixelraster über Bildschirm legen Java Basics - Anfänger-Themen 7
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
S Java über SSH Java Basics - Anfänger-Themen 13
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
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
W char über die Konsole? Java Basics - Anfänger-Themen 7
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
A Array Ansprache einer Zelle über Punktnotation? Java Basics - Anfänger-Themen 3
O Java über cmd benutzen ? Java Basics - Anfänger-Themen 5
J Variablenzugriff über string Java Basics - Anfänger-Themen 18
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
M Java Kompilieren über Package grenzen hinaus Java Basics - Anfänger-Themen 4
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
B OOP-Anfänge über CMD + Editor Java Basics - Anfänger-Themen 30
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
J Gefilterten Stream über die Konsole ausgeben Java Basics - Anfänger-Themen 1
S Variablen Klassenvariable über Objekt aufrufen Java Basics - Anfänger-Themen 16
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
L Iterieren über eine CSV Datei Java Basics - Anfänger-Themen 7
I GUI über Eclipse oder NetBeans Java Basics - Anfänger-Themen 23
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
O Methode über Leerzeichen Java Basics - Anfänger-Themen 13
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
J MySQL Datumsabfrage über ResultSet in Java-Servlet Java Basics - Anfänger-Themen 4
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
R Keine Verbindung zu MySql über Netbeans Java Basics - Anfänger-Themen 15
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
G Arraynamen über eine Schleife ansprechen Java Basics - Anfänger-Themen 4
S Bild über JButton legen Java Basics - Anfänger-Themen 3
temi Druckeransteuerung über ESC-Sequenz Java Basics - Anfänger-Themen 21
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
B Könnte jemand über dieses jurze Javaprogramm schauen? Irgendwas funktioniert mit der z-Varible nicht Java Basics - Anfänger-Themen 2
M Java Programm über Batch-Datei ausführen Java Basics - Anfänger-Themen 1
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
P Threads Prozess kann nicht über die GUI gestartet werden Java Basics - Anfänger-Themen 8
T CMD über Java-Programm aufrufen Java Basics - Anfänger-Themen 2
X Finde die Files über FTP nicht Java Basics - Anfänger-Themen 4
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
P Programm kann über CMD nicht ausgeführt werden Java Basics - Anfänger-Themen 2
E Frage über Speichern und Ausgabe Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
X Betriebssytem interne Consolen Commands über Java starten Java Basics - Anfänger-Themen 2
J ArrayList über verschiedene Klassen verwenden Java Basics - Anfänger-Themen 7
A .jar über Webbrowser aufrufen Java Basics - Anfänger-Themen 2
D Ausgabe über JLabel Java Basics - Anfänger-Themen 12
L Erste Schritte Arrays über eine for Schleife ansprechen. Java Basics - Anfänger-Themen 6
MiMa Datentyp Short Wert zuweisen über Methode Java Basics - Anfänger-Themen 2
K Objekt soll Anwendung über Änderungen informieren Java Basics - Anfänger-Themen 8
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
F Gewichteter Mittelwert über eine Zeitperiode Java Basics - Anfänger-Themen 3
B Schleife über einen Container Java Basics - Anfänger-Themen 7
Henri Paare Frage über Java Programmierung Java Basics - Anfänger-Themen 10
T jar von stick aus über jre auf stick starten Java Basics - Anfänger-Themen 6
L Iterieren über ArrayList Java Basics - Anfänger-Themen 1
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
F Methoden aus anderer classe über nehmen Java Basics - Anfänger-Themen 10
N .propertiesdatei über Relativen Pfad einlesen lassen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben