Klassen Eigene Datenklasse - Strings mit fixer Länge

alex2011

Mitglied
Hallo Forenteilnehmer,

ich möchte Daten in Datenklassen speichern.

In anderen Programmiersprachen gibt es den Typ Record oder Datenstruktur - ich benötige so etwas ähnliches, um Daten zu bündeln und ggf. in fixen Längen zu speichern.

Falls schon ähnliche Problemlösung in anderem Thema vorhanden, dann wäre ein Hinweis nett.

Das Problem mit Datenstrings fester Länge habe ich schon bewältigt, jedoch scheitere ich daran, die Werte der fixen Strings aus den Datenklassen zurückzugeben.


Klasse FixedString lässt mich Strings mit festen Längen erzeugen
Java:
public class FixedString {
	int strlen;
	int strfixlen;
        StringBuffer stringfix;
    
	public FixedString(String strval, int slen) {
		strlen    = strval.length();
		strfixlen = slen;
		this.set(strval);
	}
	
	public void set(String strval ) {
		stringfix = new StringBuffer(strval);
		stringfix.setLength(strfixlen);
		
		for (int ix = strlen;  ix < strfixlen; ix ++) {
			stringfix.replace(ix, ix + 1, " ");
		}
	}
	public String get() {
		return stringfix.toString();
	}
}

Datenklasse DSCustomer soll einige Werte aufnehmen
Java:
public class DSCustomer {
		public FixedString  cusid;
	        public FixedString  name;

		public DSCustomer() {
			cusid = new FixedString("", 10);
			name =  new FixedString("", 30);
		}
	
}

Im Testprogramm verwende ich die fixen Strings und Datenklassen, hier gibt es Probleme,
mit Rückgabe der Werte aus Datenklassen-Elementen.

Java:
public class FixedStringTest {
	public static void main(String[] args) {
		// Funktioniert - String mit 20 Stellen, nur die ersten mit hallo befüllt
		FixedString string20 = new FixedString("hallo", 20);
		
		System.out.println("len " + string20.get().length() + " - " + string20.get());
		
                // Bedienen der Datenklasse funktioniert
		DSCustomer xdscus = new DSCustomer();
		xdscus.cusid.set("08154711");
		xdscus.name.set("Hansi Müller");

                // Auslesen der Datenklasse geht nicht, es gibt nur leere Werte !!!!
		String cusid = new String(xdscus.cusid.get());
		System.out.println("cusid: " + cusid);
	}
}

Habe schon mit der Datenklasse herumgewurschtelt, doch leider kriege ich die Werte nicht zurück. Möglicherweise ist sie nicht optimal...

Alex
 
Hallo Michael,

danke für den Tipp, habe zu lange getestet und nichts mehr beim Debuggen gesehen...!!

Ich habe nun inder set-routine die strlen gesetzt. Jetzt funktioniert es...

Alex

Java:
public class FixedString {
	int strlen;
	int strfixlen;
    StringBuffer stringfix;
    
	public FixedString(String strval, int slen) {
		//
		strfixlen = slen;
		this.set(strval);
	}
	
	public void set(String strval ) {
		strlen    = strval.length();
		
		stringfix = new StringBuffer(strval);
		
		stringfix.setLength(strfixlen);
		
		for (int ix = strlen;  ix < strfixlen; ix ++) {
			stringfix.replace(ix, ix + 1, " ");
		}
	}
	
	public String get() {
		
		return stringfix.toString();
	}
		
}
 

Zurück
Oben