# java.lang.ArrayIndexOutOfBoundsException: 1



## Schmidti (9. Juli 2010)

Hallo, ich bin heute das erste Mal hier und hoffe, dass Ihr mir helfen könnt.

Ich habe ein Programm geschrieben in das ich über die Konsole eine Textdatei mit werten einlesen und mit denen ich ein Grapfen über die AWT ausgeben kann.
Das Programm hat auch die ganze zeit funktioniert, bis heute.
Ich habe nähmlich versucht, ein paar Exception abzufangen und als ich alles wieder zurück gestellt habe, lief das Programm auf einam nicht mehr.

Voran liegt das?  ->>>   Siehe Code(Fehler-Markierung an betreffender Stelle):  

```
....
public static void main(String[] args) 
	{		        		
		if(args.length == 0)          // wurde ein Konsolenparameter angegeben?
		{
		  System.out.println("Bitte geben Sie eine Text-Datei mit Mssdaten an!");
		  System.exit(0);             // Bricht das Programm ab!
		}	
		  
		  for(int i=0; i<args.length; i++)
		  {  
			Pfad = args[i];  
		    builder.append(Pfad);
		    builder.append(" ");			   
		  }	  	  
		  
		  /*Wandelt Pfadangabe des Konsolenparameter in ein String um, und
		    interpretiert diesen als ein Zeilen-String inc. Leerzeichen */	
		  try
		  {			  		 
			  // Wandelt für FileReader, den StringBuilder in String um
			  cach = new FileReader(builder.toString());
			  BufferedReader messData = new BufferedReader(cach);
			  			  
			  //Zeilenweise Aufteilung in Strings, wenn Leerzeichen vorhanden ist 
			  while((zeile = messData.readLine())!= null){				
					werte.add(zeile.split(" ")); 					
		      }			  
			  // übergibt Textinhalt an Unterklasse "holeMessDat"
			  mess.Messungen(werte);                                                  //<<<<<<< Hier taucht der Fehler  "java.lang.ArrayIndexOutOfBoundsException: 1" auf
                                                                                                                                            //und ich weiss nicht warum. das hat vorher auch funktioniert!!
			  
			  // Rückgabe der eingelesenen Werte, von der Unterklasse "holeMessDat"
			  intArray = mess.Messungen(werte);
			  zahlen.Summen(intArray);
		  }		  
		  catch (IOException e)
		  {
			  System.err.println("Fehler: " + e);
		  }	
	}  // Ende des Interfece main
}  // Ende des Programms
```

Bin über professionelle Hilfe sehr dankbar.


----------



## Artorius (9. Juli 2010)

Hi!
Wenn du mal in der API nachguckst http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/, kann man folgern, dass versucht wird, auf einen Index im Array zuzugreifen, der nicht existiert. Also, schau mal was in das Array eingelesen wurden, und auf was der Aufruf mess.Messungen so zugreifen möchte...

*grüssle*


----------



## HonniCilest (9. Juli 2010)

Was isn bei die werte?
Wenn ich das so sehe, müsste das eine ArrayList oder ähnliches sein, welche bei add() ein String[] erwartet. Genau soeine Liste müsste dann auch mess.Messungen() als Argument erwarten.
Wie sieht deine Methode mess.Messungen() aus?


----------



## Schmidti (9. Juli 2010)

Die methode sitzt in der Klasse "getIntegerValue" und heisst Messungen. der Code davon ist folgender:


```
import java.io.*;
import java.util.List;

public class getIntegerValue 
{
	public int[][] Messungen(List<String[]>werte) throws IOException
	{				
		int i=0;
		int MessWerte[][] = new int[werte.size()][werte.size()];
			 
	  for(String[] arr:werte)
	  {
		  try 
		  {			   
			   MessWerte[i][0] = Integer.parseInt(arr[0]);
			   MessWerte[0][i] = Integer.parseInt(arr[1]);
			   i++;
		  }
		  catch(NumberFormatException ex){
		      System.err.println("Eine Wert war keine Zahl! " + ex.getMessage());			      
		  }			   
	  }	 		
		return MessWerte;
    }	 
}
```


----------



## Schmidti (9. Juli 2010)

Hallo Artorius, also in der Liste steht folgendes drin:

[[Ljava.lang.String;@addbf1]

damit kann ich aber nichts anfangen! kannst du das?


----------



## deepthroat (9. Juli 2010)

Hi.

Offenbar enthält eine Zeile deiner Messdaten kein Leerzeichen.

Deshalb kannst du nicht auf arr[1] in der Messungen Methode zugreifen. Du darfst also nur vollständige Messdaten in die Liste einfügen.

Übrigens ist deine Benennung mehr als sonderbar. In der Regel sind Klassen Substantive (z.B. String) und Methoden drücken eine Tätigkeit oder Veränderung aus (z.B. parseDouble).

Außerdem sollte wohl die Messungen Methode statisch sein, da diese offenbar keine Instanzvariablen verwendet. So mußt du keine Instanz der Klasse "getIntegerValue" (wirklich ein furchtbarer Name) erstellen.

Gruß


----------



## Schmidti (9. Juli 2010)

oh mein gott ^^ ja das war mein "beschißender" Fehler
Hallo deepthroat, vielen dank  du hats mir sehr geholfen

Gruß


----------

