# java.lang.ArrayIndexOutOfBoundsException



## gnom69 (17. Jan 2007)

Eins meiner ersten Programme in Java solte ein Taschenrechenr werden in dem man die komplette Rechnung eingibtl
aber beim Compilieren kommt immer und immer wieder:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
	at Anfang.eingabe(Anfang.java:110)
	at Anfang.main(Anfang.java:128)

die Rechnungen sollen ungefähr so aussehen:
10 + 10 + 10

(Das programm ist noch nicht ganz Fertig da die eigentliche Rechnung noch fehlt, aber diese geht nur wenn der Anfang funktioniert)


```
import javax.swing.*;
/**
 * @author Patrick Koch
 *
 */
class Anfang {
	
	 public static   void   eingabe()
	  {
		 
		
		 
			String aufgabe =  JOptionPane.showInputDialog("Bitte Rechnung eingeben"); 
		 
		String[] results = aufgabe.split(" ");            // Hier wird der array geteilt		
		 try
		 {
		  String b ="Fehler";
		
	
	boolean doppel = false;
	
	
	int zahleins = Integer.parseInt( results[0] );	 //Die array teile werden zugeteilt

	
	
	if (results[1]=="+")
	{
		boolean zweiplus = true;
		boolean zweiminus = false;
		boolean zweimal = false;
		boolean zweidurch = false;
	}
	else if (results[1]=="-")
	{
		boolean zweiplus = false;
		boolean zweiminus = true;
		boolean zweimal = false;
		boolean zweidurch = false;
	}
	else if (results[1]=="*")
	{
		boolean zweiplus = false;
		boolean zweiminus = false;
		boolean zweimal = true;
		boolean zweidurch = false;
	}
	else if (results[1]=="/")
	{
		boolean zweiplus = false;
		boolean zweiminus = false;
		boolean zweimal = false;
		boolean zweidurch = true;
	}
	
	
	

	if (results[3]=="+")
	{
		 doppel = true;
		boolean dreiplus = true;
		boolean dreiminus = false;
		boolean dreimal = false;
		boolean dreidurch = false;
	}
	else if (results[3]=="-")
	{
		 doppel = true;
		boolean dreiplus = false;
		boolean dreiminus = true;
		boolean dreimal = false;
		boolean dreidurch = false;
	}
	else if (results[3]=="*")
	{
		 doppel = true;
		boolean dreiplus = false;
		boolean dreiminus = false;
		boolean dreimal = true;
		boolean dreidurch = false;
	}
	else if (results[3]=="/")
	{
		 doppel = true;
		boolean dreiplus = false;
		boolean dreiminus = false;
		boolean dreimal = false;
		boolean dreidurch = true;
	}
	
	else
	{
		System.out.println(b);
	}
	
	int zahlzwei = Integer.parseInt( results[1] );	 //Die array teile werden zugeteilt
	int zahldrei = Integer.parseInt( results[2] );	 //Die array teile werden zugeteilt
	
	if ( doppel == true )
	{
	int zahlvier = Integer.parseInt( results[3] );	 //Die array teile werden zugeteilt
	int zahlfunf = Integer.parseInt( results[4] );	 //Die array teile werden zugeteilt
	}
	
		 }
		 catch (ArrayIndexOutOfBoundsException ni)
		 { 
			 results[3]="";     
		 }
	
	  
	  }

	  static void rechnen()
	  {
		
			
		  
		  
	  }
	  
	  public static void main( String[] args )
	  {
		
		
		eingabe();
		  
	  }}
```


----------



## Wildcard (17. Jan 2007)

wenn die Rechnung so aussieht:
10 + 10 + 10 
Dann hat das Array nur 3 Elemente.
Da Arrays bei 0 anfangen wäre [3] das vierte -> Exception


----------



## Guest (17. Jan 2007)

Doch es stimmt:  
1. 10                     
2.  +
3. 10
4.  +
5. 10

Also:

0. 10                     
1.  +
2. 10
3.  +
4. 10


----------



## Wildcard (17. Jan 2007)

Jau, hab wohl nur die Zahlen gesehen  :shock: 
Dann war die Eingabe vermutlich eine andere, denn die Exception fliegt wenn das Array 3 oder weniger Elemente hat.


----------



## Marco13 (17. Jan 2007)

Bei mir schmeißt er da eine NumberFormatException. Mach mal

```
String[] results = aufgabe.split(" ");            // Hier wird der array geteilt

      for (int i=0; i<results.length; i++)
      {
          System.out.println("results["+i+"] = "+results[i]);
      }
```
das wird helfen, den Fehler zu finden.


----------



## Marco13 (17. Jan 2007)

BTW: Strings vergleicht man nicht mit "==", sondern mit
xxx.equals("bla");


----------

