PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wo liegt der Fehler ?



Jones97
01.03.2016, 15:38
Ich verstehe nicht warum hier ein Fehler angezeigt wird. Ich habe nun 100.00 mal drüber geschaut aber ich versteh es nicht...

String str = txaEingabe1.getText();
String strArray[] = str.split("\n");


for (int i= 0; i<=1391; i++)
{
char[] charWort = strArray[i].toCharArray();
for (int j = 0; j <= 17; j++)
{
if (charWort[j] == 214 || charWort[j] == 246 || charWort[j] == 220 || charWort[j] == 252)
{
txaAusgabe.append(strArray[i]+ "\n");
}
}
}


}


Hier der Fehlercode:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
at Filter.GUI.btnStartActionPerformed(GUI.java:106)
at Filter.GUI.access$000(GUI.java:13)
at Filter.GUI$1.actionPerformed(GUI.java:43)

Vr3piz4
01.03.2016, 15:57
Vielleicht hilft dir http://bfy.tw/4Wmy weiter.

hoschi111
01.03.2016, 15:58
Steht doch da?!

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1

Da greifst auf einen Index in einem Array zu, der nicht existiert. Beispiel: Dein Array hat 10 Elemente. Jetzt versuchst du auf Array(10) zuzugreifen. Da ergibt einen ArrayIndexOutOfBounds. (Array(10) => 11. Index).

Rothir
01.03.2016, 16:10
Kleiner tipp auch noch zum Programmierstil: vermeide magic numbers (das sind zahlen von denen keiner eine Ahnung hat was die eigentlich sein sollen...)

zB:
1391 -> so wie ich das sehe wäre das -> strArray.length()
für die 17 kriegst das selber hin...

deine chars 214, 246 etc ... bei den meisten Zeichen kannst du diese direkt in Anführungszeichen (') schreiben...
Wenn das nicht geht... schau dir mal final/const an Infos dazu findest du dort: https://en.wikipedia.org/wiki/Final_%28Java%29

Sonst siehst du später deinen Code, und denkst dir was hab ich da gemacht?

Jones97
01.03.2016, 16:15
Kleiner tipp auch noch zum Programmierstil: vermeide magic numbers (das sind zahlen von denen keiner eine Ahnung hat was die eigentlich sein sollen...)

zB:
1391 -> so wie ich das sehe wäre das -> strArray.length()
für die 17 kriegst das selber hin...

deine chars 214, 246 etc ... bei den meisten Zeichen kannst du diese direkt in Anführungszeichen (') schreiben...
Wenn das nicht geht... schau dir mal final/const an Infos dazu findest du dort: https://en.wikipedia.org/wiki/Final_%28Java%29

Sonst siehst du später deinen Code, und denkst dir was hab ich da gemacht?

Danke Rothir, der Code sieh jetzt wie folgt aus:

String str = txaEingabe1.getText();
String strArray[] = str.split("\n");


for (int i= 0; i<=strArray.length; i++)
{
char[] charWort = strArray[i].toCharArray();
for (int j=0; j<charWort.length; j++)
{
if (charWort[j] == 'Ö' || charWort[j] == 'ö' || charWort[j] == 'Ü' || charWort[j] == 'ü')
{
txaAusgabe.append(strArray[i]+ "\n");
}
}
}


}

Rothir
01.03.2016, 16:22
Ein "for" ist falsch, und eines richtig. Jetzt versuche bitte selber einmal rauszufinden welches von beiden funktioniert, und bessere das andere entsprechend aus.
Falls du nicht drauf kommst, vergleich die beiden mal genau miteinander...

sontyp
05.02.2018, 11:55
Hat er dazu jetzt nichts mehr gesagt, weil er's aufgegeben hat oder weil's ihm peinlich war? :D