"We are back" « oc.at

java string frage wieder mal :(

d3cod3 09.05.2004 - 17:38 523 5
Posts

d3cod3

Legend
...
Avatar
Registered: Aug 2002
Location: insert location ..
Posts: 15285
wie immer bin i wieder mal zdeppad dass ich was finde...

problemstellung ist folgende:

i muss einen string einlesen der folgende zeichen akzeptiert: ziffern, A, I, E, D, +, -, =

ausschauen darf er so dass immer eine ziffer kleiner gleich 50000 kommt, danach ein A, I, E oder D. danach ein + oder -, dann wieder eine ziffern/buchstabe kombi. (maximal 5 mal).
abschließend kommt das = und danach noch ein buchstabe.

also ca. so:

400E+200A-110D=A


kann man das so irgendwie machen:

([123456789][AIED][+-]) das halt maximal 5 mal und dann noch =[AIED]

nur wei0/find ich net wie ich das realisieren kann. hoff jemand versteht was ich meine und kann mir helfen...

gerhardtt

Big d00d
Registered: Aug 2000
Location:
Posts: 333
also entweder du lernst regular expressions(kann nicht schaden):

http://www.regular-expressions.info/java.html

und löst das ganze elegant oder versuchst das ganze mit string.split() zu teilen und somit kleinere probleme zu haben. als deliminerator =,-,+

weiters wichtig wird sein:

http://java.sun.com/j2se/1.4.2/docs...gTokenizer.html

sind halt nur hinweise

grüsse
laborg

d3cod3

Legend
...
Avatar
Registered: Aug 2002
Location: insert location ..
Posts: 15285
mit regular expressions hätte ich gedacht dass es so ausschaut:

[0-9][AIED]([+-][0-9][AIED]){0,4}=[AIED]

allerdings hab i keine ahnung wie ich das ins programm einbau :(

gerhardtt

Big d00d
Registered: Aug 2000
Location:
Posts: 333

d3cod3

Legend
...
Avatar
Registered: Aug 2002
Location: insert location ..
Posts: 15285
ah, das frag i dann einfach mit matches ab...
das war mal wieder zu logisch...

thx! die überprüfung funzt jetzt mal mit

Code:
String test = readWord();
	if (test.matches("[0-9]{1,5}[EIAD]([+-][0-9]{1,5}[AEID]){0,4}=[AEID]")){
		println("jo");}
	else{
		println("na");}
Bearbeitet von d3cod3 am 09.05.2004, 18:23

d3cod3

Legend
...
Avatar
Registered: Aug 2002
Location: insert location ..
Posts: 15285
ok, aber ganz hauts net hin...

ich hab das jetzt mal in groups eingeteilt damit ichs nachher einfach auslesen kann.
schaut mal so aus:

die :( sind : (

Code:
String eingabe = readWord();
	
	if (eingabe.matches("([0-9]{1,5})([AIED])([+-=])?(?:([0-9]{1,5})([AIED])([+-=])?)?(?:([0-9]{1,5})([AIED])([+-=])?)?(?:([0-9]{1,5})([AIED])([+-=])?)?(?:([0-9]{1,5})([AIED])([+-=])?)?[AIED]")){

wie kann ich mir da jetzt die gruppen nach der reihe in strings speichern?

also ich hätte es immer gern als Ziffer/Buchstabe häppchen und die vorzeichen als gruppe.

komm aber net dahinter wie das gehen soll

String blabla = eingabe.groups(0);

zb mag er nicht...
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz