URL: https://www.overclockers.at/coding-stuff/arrayindexoutofboundsexception_103747/page_1 - zur Vollversion wechseln!
muss bei nem array testen ob es nur bestimmte zahlen enthält.
Code:String input = readWord(); int lange=input.length(); char[] eingabe=input.toCharArray(); int x = eingabe.length; for(i=0;i<=x;i++) { if(eingabe[i]!='('&&eingabe[i]!=')'&&eingabe[i]!='+' &&eingabe[i]!='-'&&eingabe[i]!='*'&&eingabe[i]!='<'&&eingabe[i]!='>' &&eingabe[i]!='='&&eingabe[i]!=','&&eingabe[i]!='1'&&eingabe[i]!='2' &&eingabe[i]!='3'&&eingabe[i]!='4'&&eingabe[i]!='5'&&eingabe[i]!='6' &&eingabe[i]!='7'&&eingabe[i]!='8'&&eingabe[i]!='9'&&eingabe[i]!='0') {print("schas");return; } }
dein i schieszt ueber das array hinaus
Schleife müsst bis i<x und nicht bis i<=x gehn, da der Index des Arrays bei 0 beginnt. d.h. das erste Element hat den Index 0.
Mit length bekommst die Anzahl der Elemente, die im Array enthalten sind.
Deshalb muss die Schleife auch von 0 bis <length gehn
hth
argl. das is ja ein ärger blöder fehler. danke
noch nachträglich.. statt 20 mal "bla=?? && bla=?!" in einem if statement, solltest lieber ein array nehmen und dann mit einer 2ten schleife dieses durchprüfen. langsamer, schaut aber besser aus
@mat: Würde ich nicht machen, sondern eher ein BitSet verwenden (Package java.util).
Das würde dann ca. so ausschaun:
Aber diese if-Abfrage ist prinzipiell auch in OrdnungCode:BitSet set = new BitSet(); set.set((int)'('); set.set((int)')'); /* ... usw. */ for (i=0; i<x; i++) { if (set.get((int)eingabe[i]) { /* ... */ } }
die initialisiertung des bitsets ist wiederrum recht ugly ;(
if ("()<>,.*=-+01234567890".indexOf(eingabe[i])<0) { /* Fehler */ }
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025