# StringIndexOutOfBoundsException - Problem



## Ribbley (14. Jun 2012)

Ich probier mich gerade selbst an einem kleinem Spiel, ich denke der größte Teil ist auch irrelevant, ich bräuchte nur mal jemanden mit nem freien Kopf, der mal drüber schaut, iwas muss mir da untergelaufen sein, was falsch ist... =/


```
void lvlcheck(int lvl){
			int i=0,j=0;
			ihandler.counter=0;
			String[] zeile = new String[20];
			for(i=0;i<=19;i++){
				zeile[i]=null;
			}
			i=0;
			char[][] chararray = new char[20][20];
			
			FileReader fr = null;
			try {
				fr = new FileReader("lvl"+lvl+".txt");
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				
			}
			BufferedReader br = new BufferedReader(fr);
			
			for(j=0;j<=19;j++){
			try {
				zeile[j] = br.readLine();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
				for(i=0;i<=19;i++){
					chararray[i][j]=zeile[j].charAt(i);
					if (chararray[i][j]=='S'){
						ihandler.xcor=(((i-1)*25)+75);
						ihandler.ycor=(((j-1)*25)+105);
					}
					if (chararray[i][j]=='B'){
						ihandler.blocks[i][j]=true;
					}
					else {
						ihandler.blocks[i][j]=false;
						ihandler.counter++;}
				}
			}
			try {
				br.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			System.out.println("Checking stage "+ ihandler.stage +"...\n");
			
			for(i=0;i<=19;i++){
				for(j=0;j<=19;j++){
					if(ihandler.blocks[i][j]){
						System.out.print("B");
						
					}
					else{
						System.out.print("W");
						}
				}
				System.out.println("");
			}
		}
```

Und zwar ist diese Methode dazu dar, ein Lvl zu initialisieren und zu prüfen, mir also eine Wiedergabe in der Konsole auszugeben, mehr nicht. Allerdings gibt es ein Problem bei :

```
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 10
	at java.lang.String.charAt(String.java:694)
	at GUI.lvlcheck(Wischmob.java:107)
```

dabei handelt es sich höchstwarscheinlich um :
[JAVA=31]chararray_[j]=zeile[j].charAt(i);[/code]
ein Fehler hier, der Stringarray wurde mit [20] initialisiert und wird auch nur bis 19 inkrementiert, also eig. alles in Butter oder?! =(
Vllt übersehe ich noch was...
Ich schreib euch trotzdem nochmal alle relevanten daten von den restlichen Variablen die vorkommen:

[WR]boolean ihandler.blocks[20][20]
int ihandler.stage -kein array-
long ihandler.counter -kein array-
int lvl -kein array[/WR]


Wäre nett wenn mich jmd von meiner Hilflosigkeit erlösen könnte _


----------



## Fu3L (14. Jun 2012)

```
for(i=0;i<=19;i++){
chararray[i][j]=zeile[j].charAt(i);
```

Der eingegebene String hat anscheinend 10 Zeichen und du lässt i bis 19 laufen.


----------



## Ribbley (14. Jun 2012)

Das Einfachste ist meist das Problem...
ich hab den Fehler so interpretiert das das Stringarray zu klein ist, dabei, DU HAST RECHT!! =D
, die Zeile war einfach zu kurz.
Ich entnehme die Daten aus einer Datei (lvl1.txt) hier... ^^  Die war auf einer anderen Ebene, ... aber gleichnamig deswegen hab ich das nicht entdeckt... diesen kleinen Fehler.

Danke! Vielen Dank


----------

