Array Werten in anderen Methoden nicht sichtbar

Daywalker2004

Grünschnabel
Hallo

ich habe gerade erst mit Java angefangen. Hab vorher nur Visual Basic .Net programmiert und hab ein paar Probleme mit der Sichtbarkeit meiner Arrays. Also ich möchte folgendes machen. Ich habe eine Textdatei mit 3 einträgen die in ein Array gepackt werden sollen. Nur möchte ich das Array erweitern (hab immer nen neues array angelegt... weiß nicht ob man in Java irgendwie das Array vergrößern kann).

Code:
package haushaltsbuch2;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Konto {
	
	String kName[] =  new String[anzahlKonten()];
	int kNummer[] = new int[anzahlKonten()];
	double kBetrag[] = new double[anzahlKonten()];
	
	boolean kStatus = false;
	
	
	public void neuesKonto(String name, int nummer, double betrag){
		Konto konto = new Konto();
		
		
		
		
		
		System.out.println("Neues Konto wird angelegt...");
		for(int i = 0; i < kName.length; i++){
		
			if(kName[i] == name && kNummer[i] == nummer){
				
				System.out.println("Dieses Konto gibt es leider schon.");
				kStatus = true;
				
			}
		}
		
		if(kStatus == false){
			
			System.out.println("Länge vorher: " + kName.length);
			kName = new String[kName.length + 1];
			System.out.println("Länge nachher: " + kName.length);
			System.out.println("Kontodaten werden geladen...");
			konto.kontoLaden();
				
			System.out.println(kName[0]);
			kName[kName.length - 1] = name;
			
			konto.kontoSpeichern();
			
		System.out.println("Eingetragen");
			
		}

	}
	
	public int anzahlKonten() {
		
		int i = 0;
		String zeile;

		try {
			BufferedReader br = new BufferedReader(new FileReader("Konten.txt"));
									
			zeile = br.readLine();
					
			while (zeile != null) {
				 i++;
				 
				 zeile = br.readLine();
				
			}
							
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return i;
	}
	
	public void kontoSpeichern(){
		
		try {
			PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("Konten.txt")));
			System.out.println("Länge Speichern: " + kName.length);

			for (int i = 0; i < kName.length; i++){
				
				pw.println(kName[i] + "," + kNummer[i] + "," + kBetrag[i]);
				
			}
			

			pw.close();
			
			System.out.println("Fertig");
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	
	public void kontoLaden() {
		
		Konto konto = new Konto();
		
		int i = 0;
		int m = 0;
		int k[] = new int[3];
		
		String zeile;
		System.out.println("Länge Laden: " + kName.length);
		try {
			BufferedReader br = new BufferedReader(new FileReader("Konten.txt"));
									
			zeile = br.readLine();
					
			while (zeile != null) {
				
				 
				 m = 0;
				 
				 for(int j=0; j < zeile.length(); j++)
	            	{
	            		if(zeile.charAt(j) == ',')
	            		{
	            			m++;
	            			k[m] = j;
	            		}
	            			
	            		
	            	}
			
				 
				 kName[i] = zeile.substring(0, k[1]);
				  kNummer[i] = Integer.valueOf(zeile.substring(k[1] + 1, k[2]));
				 kBetrag[i] = Double.parseDouble(zeile.substring(k[2] + 1, zeile.length()));
	             
	             System.out.println("Name: " + kName[i] + " Nummer: " + kNummer[i] + " Betrag: " + kBetrag[i]);
	           
				 zeile = br.readLine();
				 
				 i++;
			}
			
			System.out.println("Name: " + kName[1] + " Nummer: " + kNummer[1] + " Betrag: " + kBetrag[1]);
							
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	
}

Inwzischen hab ich meinen Quelltext verwurstet durchs ganze rumprobieren :(. ich möchte ja eigentlich nur, dass der als erstes meine daten aus der textdatei in das array schreibt. dann wird ein neues konto angelegt und die methode neuesKonto vergleicht das neue konto mit dem array ob das konto schon vorhanden ist. dann wird das array um 1 größer neu angelegt. die daten sind ja somit weg. jetzt wollte ich das der mir wieder die daten aus der textdatei in das neue array schreibt (dafür die methode kontoLaden. Danach soll der in das leere feld mein neues konto eintragen und dann die funktion kontoSpeichern aufrufen, die dann das ganze Array speichert. Aber leider klappt das bei mir nicht :(

inhalt der textdatei:

Code:
Hallo,1223432,1002.0
dasdlo,45453432,1002.0
komto,909023432,1002.0


wenn ich jetzt auf die "alten" array werte zugreifen möchte bekomm ich immer nur NULL :(

ich weiß der quelltext ist nicht so berauschend ;) aber bin ja noch am üben :D

ausgabe auf dem bildschirm

Code:
Neues Konto wird angelegt...
Länge vorher: 3
Länge nachher: 4
Kontodaten werden geladen...
Länge Laden: 3
Name: Hallo Nummer: 1223432 Betrag: 1002.0
Name: dasdlo Nummer: 45453432 Betrag: 1002.0
Name: komto Nummer: 909023432 Betrag: 1002.0
Name: dasdlo Nummer: 45453432 Betrag: 1002.0
null
Länge Speichern: 3
Fertig
Eingetragen
Anzahl: 4


danke für eure hilfe schonmal. ich könnte den quelltext auch noch kommentieren wenn ihr wollt.

mfg Daywalker2004
 
Zuletzt bearbeitet:
hmm ich benutze eclipse, debuggt der da nicht automatisch?

und ich denke mal das eclipse es nicht als fehler ansieht wenn das array in unterschiedlichen methoden, unterschiedlich lang ist oder irre ich mich da?
 
Zurück