Datentypen Objekt Array oder ähnlich definieren

Z

Zoran

Gast
Hallo!

Vorab: Ich bin ein Anfänger, daher bitte um Nachsicht
Ich möchte folgendes Problem lösen:
Ich sende über eine serielle Schnittstelle ein Kommando und erhalte einen ca. 100 Zeichen langen String zurück.
Jedes Zeichen, bzw. Zeichengruppen gehören zusammen und haben eine Bedeutung.
Ich möchte jetzt diesen String "analysieren" und die Werte in meiner TextPane ausgeben.

z.B.: String = 1-1-0000-2222-3333-4444-5555-1-0-1 (ohne Bindestriche --> dienen nur als Veranschaulichung)

die Ausgabe soll sein:
"Test enabled - OK" (ermittelt durch die erste 1)
"check A done - OK" (ermittelt durch die zweite 1)
"Value A - 0000 - OK"
...
usw.

In diesem Array-Objekt sollten der Text (String), der Wert (Float bzw. Boolean) und Länge (int) enthalten sein.

Ich glaube, dass ich eine Klasse mit 3 Variablen definieren muss und dann initialisiere ich das Teil mit
String und Länge.
Aber so genau check ich's nicht.

Ich hoffe, die Fragestellung ist verständlich und danke im Vorhinein für eure Hilfe.
 

faetzminator

Gesperrter Benutzer
Ich versteh nicht ganz... Sollen nun die ersten drei Werte mit [c]1, 1, 0000[/c] verglichen werden? Oder steckt da doch mehr dahinter? Dann stelle uns doch bitte eine genauere Beschreibung hier rein :)
 
S

SlaterB

Gast
wie du grundsätzlich Klassen definierst hat nun nichts mit dieser Aufgabe zu tun,
public class usw. schreiben, benötigte Attribute definieren usw., was soll man dazu sagen?
danach vielleicht ein Array dieser Klasse anlegen, Array ist eher auch Standardthema

du musst den String auftrennen, das klingt noch am interessantesten,
du sagst die Bindestriche gibt es nicht, lautet der String also 1100002222333344445555101 direkt hintereinander?
dann wäre ja gar keine Information gegeben, dann müsstest du die gesamte Analyse per Hand vornehmen,
- erster Teilstring = erstes Zeichen, ..
- zweiter Teilstring = zweites Zeichen, ..
usw.,
bei solcher Vorgabe kannst du auch die Länge und Typ gleich dazuschreiben, nur der Wert ist aus dem String zu holen,
charAt gibt es, subString usw., eigentlich auch bekannte Standardmethoden
 
Z

Zoran

Gast
Wow, das geht ja fix bei euch.

Wie SlaterB erkannt hat ist alles in "einer Wurscht".
Ich weiß was wo sitzen muss, d.h. z.b:
erstes Zeichen ist ein true/false bzw. 1/0 und steht für "Test enabled".
Wenn also an erster Stelle eine 1 kommt, dann gebe ich das aus.
Das nächste Zeichen ist wieder nur ein Byte lang mit true/false.
Danach sind 36 mal 4 Zeichen dran. Danach kommen 2 x true/false 2 x 4 Zeichen und zuletzt 5 x true/false.
Also ein verda..t langer String der durchforstet wird.

Folgende Idee:

Java:
public class TestAllDecoder {

	float f;	// value
	String s;	// name string
	int l;		// value string length

	TestAllDecoder(String name, float value, int length) {
		this.f = value;
		this.s = name;
		this.l = length;
	}

	public void initDecoder() {
	TestAllDecoder[] ar = {			
		new TestAllDecoder("Test enabled!" , -1F, 1),
		new TestAllDecoder("Power A enabled!" , -1F, 1),
		new TestAllDecoder("Target current: " , -1F, 4),
		new TestAllDecoder("12V Target: ", -1F, 4), 
		new TestAllDecoder("0V9_CORE: ", -1F, 4), 
		new TestAllDecoder("1V5: ", -1F, 4), 

		new TestAllDecoder("1V8: ", -1F, 4), 
		new TestAllDecoder("2V5_PLL: ", -1F, 4), 
		new TestAllDecoder("3V3_TARGET: ", -1F, 4), 
		...
		...
		};
	}
}

Kann ich so eine Methode definieren wie initDecoder() und diese dann nur noch aufrufen?
In meiner Main-Klasse wäre das sehr viel unnötiger (Spaghetti-) Code.
Getter habe ich für alle Variablen und Setter für f.
 
S

SlaterB

Gast
sagt dir nicht dein Compiler, was erlaubter Code ist und was nicht?
das Forum ist nicht dein Compiler ;)
 

Neue Themen


Oben