Java String Eingabe filtern

Hallo,
vlt könnt ihr mir ja helfen,
ich habe einen String mask der ist immer 8 Zeichen lang
jetzt darf aber jede Stelle mir 0 oder 1 sein
sollte an einer Stelle die Zahl nicht 0 oder 1 sein soll die Eingabe wiederholt werden

Einlese: mask = t3.holeText();

Dann habe ich das ganze in einer so while um zu testen ob der String genau 8 Zeiichen lang ist
wenn nicht wird die Eingabe wiederholt

Brauche jetzt nur noch den Test ob an jeder Stelle nur eine 0 oder 1 da ist jemand eine Ahnung wie ich das testen kann?

Danke für die Hilfe

Ich hab keine Ahnung von Java [size=85](übrigens falscher Bereich zumal es hier ums WWW geht^^)[/size]
Auch ist deine Frage nicht so deutlich bzw. schwer leserlich…
Aber tuts da net ne Loop und nen Vergleich wie:

bool result = True; for(int i=0;i<strlen(mask)-1;i++) { if(mask[i] != '0' or mask[i] != '1') { result = False; break; } } if(result) //wahr else //falschwobei es je nachdem was du willst schlauer ist die Überprüfung direkt bei der Eingabe zu machen…

ein paar fehler sind drin, das war jetzt zu php-ig^^

boolean istKorrekt(String s) {
 // Jedes Char abprüfen...
 for(int i = 0; i< s.length; i++) 
  if(s.getChar[i] != '0' && s.getChar[i] != '1')
   // ... wenn eines nicht 0 oder 1 ist, ist der string nicht korrekt
   return false;
 // ansonsten schon
 return true;
}

// das hier ist in deiner main-methode oder wo auch immer:
// dein string
String eingelesen = "";
// den liest du so lange ein...
do
 eingelesen = holeText();
//... bis er korrekt ist -> beachte das NOT
while(!istKorrekt(eingelesen));

ungetestet!
lg
emil

Hallo,
danke für den Tipp habe es hinbekommen :p

public static boolean istKorrekt(String s){ for (int i=0; i<s.length(); i++){ if (s.charAt(i) != '0' && s.charAt(i) != '1' ){ System.out.println("Die Eingabe darf nur 0 oder 1 sein"); return false; }//end if }//end for return true; }//end boolean istKorrekt(String s)

[quote=„emil“]ein paar fehler sind drin, das war jetzt zu php-ig^^
[][/quote]es waren keine Fehler drin da es’n Pseudo Code war :wink:
Wobei ich hoffe das es gültiges C/C++ war :stuck_out_tongue: Bin mir nur mitm break net sicher :ps:
Ich mag Java aber eh net… zu kiddy like bzw. zu wenig Kontrolle übers eigene Programm, auch ists find ich eher umständlich als einfach da z.B. nicht mal string[index] geht etc.^^ [size=85](wobei Java natürlich besser als C# ist)[/size]

ein logischer fehler, du hast “or” geschrieben es hätte aber “and” heißen müssen :wink:
break is glaub ich richtig…
jedem dass seine, über c# denken glaub ich alle gleich^^
mir gefallen so sachen wie zb dass ich die deklaration von funktionen weglassen darf, das ist ein großes manko an c++, so viel bequemlichkeit MUSS sein :stuck_out_tongue:

[quote=„emil“]ein logischer fehler, du hast „or“ geschrieben es hätte aber „and“ heißen müssen :wink:
[][/quote]hr hr… joa hast recht :smiley: Ist aber dann 1 Fehler :smiley: [size=85](nur so hilft selbst die Pseudo Ausrede net, da dass was gezeigt werden sollte falsch war Oo Wer sagt allerdings das es net nur nen Test war :nutz:)[/size]

[quote=„emil“][]
mir gefallen so sachen wie zb dass ich die deklaration von funktionen weglassen darf, das ist ein großes manko an c++, so viel bequemlichkeit MUSS sein :stuck_out_tongue:[/quote]wie meinen?
Das man etwas im Header deklarieren muss? Am Anfang der Datei?
Muss man net^^ bzw. es kommt darauf an, dort wo man es muss, ist es aber sinnvoll bzw. Logisch
Das ist ja auch das große Problem an diesen Hochsprachen, sie sorgen eigl. nur für Verblödung da keiner weiß wie es wirklich abläuft und sich dann fragt wieso etwas nicht geht^^
Ich z.B. find auch ASM net so schlimm, wobei nen MASM dann schon nett ist, ansich kann ich mit C leben bzw. C++ geht auch noch wenn man den OOP Kack etc. weg lässt :smiley: [size=85](net alles aber einiges)[/size] Wobei C++0x schon nen muss ist alleine wegen nullptr und besseren enum’s etc.

Ach ja, wenn man in Java einen String hat, der genau aus 8 Zeichen je 0 oder 1 bestehen soll, ist eine Regex eine praktische Lösung :wink:

String s = "10101010"; boolean correct = s.matches("^[01]{8}$");

stimmt… da es ne Interpretationssprache ist, hätte ich das aus Performance Gründen sogar nennen müssen :ps:
Wobei die Frage ist wie gut die RegEx Engine ist und ob es hier wirklich schneller ist… in Anbetracht dessen das Java Programme angeblich fast so schnell wie C Programme sein können, bin ich mir net wirklich sicher.

Regex wäre auf jedenfall die sauberere lösung, ich tu mich allerdings immer sehr hart damit und hätts nich aus dem stegreif raus schreiben können…

ich habe c++ in der schule „gelernt“, totaler saftladen, nach 2 jahren unterricht waren wir bei Arrays angekommen :nutz: also so gesehn…
dass man die deklarationen weglassen darf, war mir nicht bewusst, allerdings haben wir nicht mal klassen benutzt, die waren zu blöd für objektorientierung also… naja…
an sich ist c++ schon ne schöne sprache, bei java zb ist das so ne sache, da wird intern alles mit zeigern geregelt, aber ich bin vor allem anfangs schon immer drüber gestolpert (war das jetz ne value- oder pointer-übergabe?!)…
inzwischen bin ich praktisch nur noch im bereich php tätig, java höchstens in der arbeit mal, ich hab einfach privat keinerlei anwendung für desktop-applikationen (und wenn doch, dann gibts bereits eine, die das meist besser erledigt :wink: )