ArrayIndexOutOfBoundsException
d3cod3 11.01.2004 - 12:26 536 6
d3cod3
Legend...
|
muss bei nem array testen ob es nur bestimmte zahlen enthält. 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;
}
}
kompilieren tuts und wenn ich was eingeb was net sein soll schreibts mir auch "schas". nur wenn ich was richtiges eingeb wie zb (3,5,6)+(4,5,6) dann kommt: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 17 at Main.main(Main.java:28) was will er mir da sagen? komm net dahinter was net passen kann.
|
xdfk
pädagogisch wertvoll
|
dein i schieszt ueber das array hinaus
|
ICE3D
Addicted
|
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
|
d3cod3
Legend...
|
argl. das is ja ein ärger blöder fehler. danke
|
mat
AdministratorLegends never die
|
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
|
gue
Addicted
|
@mat: Würde ich nicht machen, sondern eher ein BitSet verwenden (Package java.util). Das würde dann ca. so ausschaun: BitSet set = new BitSet();
set.set((int)'(');
set.set((int)')');
/* ... usw. */
for (i=0; i<x; i++) {
if (set.get((int)eingabe[i]) { /* ... */ }
}
Aber diese if-Abfrage ist prinzipiell auch in Ordnung
|
atrox
in fairy dust... I trust!
|
die initialisiertung des bitsets ist wiederrum recht ugly ;(
if ("()<>,.*=-+01234567890".indexOf(eingabe[i])<0) { /* Fehler */ }
|