# Konto löschen



## Berta (23. Feb 2012)

Hallo forum, 


ich hätte mal ne frage und zwar wollt ich wissen, wie man folgende aufgabe löst:


Die Methode loescheKonto(...) erhält als Parameter eine Kontonummer. Sie loscht das entsprechende Bank- 
konto, sofern es existiert. Die Methode liefert true zuruck genau dann, wenn ein bestehendes Bankkonto geloscht 
werden konnte. Gehen Sie davon aus, dass eine Kontonummer nicht mehrfach existiert. 


ich hab folgenden methodenkopf:

public boolean loescheKonto(int nummer){
}

ich weiß jetzt nicht, wie man in java was löscht und wie man, wenn eine nummer, die in eine methode übergeben wird, weiß, ob diese nummer im speicher schon existiert oder nicht.


danke


----------



## AlexSpritze (23. Feb 2012)

Du wirst doch irgendwie eine Liste oder Array von Kontos haben?
Allgemein etwas mehr Code, den du hier posten könntest?


----------



## Airborne (23. Feb 2012)

ein klassiker!

Du mußt das Objekt suchen, das die Kontonummer hat - das gestaltet sich je nach Liste/Array einfacher oder schwieriger.
Wenn du das Objekt sicher gefunden hast setzt du es auf den Wert "null".


----------



## Berta (23. Feb 2012)

wie finde ich das objekt mit der kontonummer?

ich hab hier mal den gesamten code:


```
class Bank{
	int blz;
	Bankkonto[] b;
	
	public Bank(int blz, int n){
	this.blz=blz;
	this.b= new Bankkonto[n];
	}
	
	public boolean neuesKonto(int nummer, int reisenummer){
	
	Bankkonto a= new Bankkonto(nummer, reisenummer);
	
	a.nummer=this.nummer;
	a.reisenummer=reisenummer;
	
	return true;
	}
	else{
	return false;
	}
	}
	
	public boolean loescheKonto(int nummer){
      //weiß nicht wie ich das objekt finde mit der nummer
	}
	
	
}
```


```
class Bankkonto{

int nummer;
double guth;
int reisenummer;

	public Bankkonto(int nummer, int reisenummer){
	this.nummer=nummer;
	this.reisenummer=reisenummer;
	this.guth=0;
	}
	
	public boolean trans(double betrag){
	if(guth+betrag>=-1000){
	guth+=betrag;
	return true;
	}
	else{
	return false;
	}
	}
}
```


----------



## Marcinek (23. Feb 2012)

In Java kannst du nur Referenzen entfernen. Die allokierung des Speichers übernimmt die VM / GC.

in diesem Fall reicht ein reines. meineListe.remove(123131);

Eventuell musst du erst das Konto aus der Liste heraussuchen um es zu entfernen. In beiden Fällen ist es trivial, wenn man in der Lage ist auch mal in ein Buch reinzuschauen.

Hinweis: Deine Liste ist ein Array. Da funktioniert das remove nicht. Da machst du einfach 

meinArray[index]= null;

Gruß,

Martin


----------



## AlexSpritze (23. Feb 2012)

Mit einer For-Schleife kannst du das Array der Kontos durchgehen:


```
for ( int i = 0 ; i < b.length ; i++ )
 // mit b[i] auf das i-te Konto zugreifen und schauen, ob es die richtige Nummer hat...
```


----------



## Berta (23. Feb 2012)

hab es so nun geschrieben:



```
public boolean loescheKonto(int nummer){
	for(int i= 0; i.<b.length; i++){
	if(b[i].nummer==nummer){
	b[i].nummer=0;
	b[i].guth=0;
	b[i].reisenummer=0;
	
	return true;
	}
	else{
	return false;
	}
        }
	}
```

ist das korrekt?


----------



## VfL_Freak (23. Feb 2012)

Moin,

nein - siehe Post von Marcinek (ganz am Ende ...) !

Gruß
Klaus


----------



## Berta (23. Feb 2012)

So?



```
public boolean loescheKonto(int nummer){
	for(int i= 0; i<b.length; i++){
	if(b[i].nummer==nummer){
	b[i]= null;
	
	return true;
	}
	
	else{
	return false;
	}
	
	}
	
	}
```


----------



## Firephoenix (23. Feb 2012)

Was macht denn der Code wenn das erste Konto nicht das Konto ist das gelöscht werden soll und das zu löschende an 2. Position ist?
Gruß


----------



## SlaterB (23. Feb 2012)

es gibt keine fundamentale Weltanschauung, wie ein gelöschtes Konto auszusehen hat,
das ist eine Textaufgabe mit Interpretation,

man kann die Werte im Konto auf 0/null setzen, den Array-Platz auf null oder auch das Array um eine Position verkürzen,
beantworten kann das niemand

(edit: mögliche Fehlerquellen wie von Firephoenix genannt sind natürlich wiederum nicht ohne)

noch edit:
vor dem Löschen vielleicht auch erstmal das Einfügen üben, bisher ist das Array doch immer leer


----------

