# Fehler in Programm: Index -1 out of bounds for length 0



## Java-Noob1234 (11. Dez 2019)

Hallo, ich habe die Aufgabe erhalten: Schreiben Sie ein Programm, dass beliebig viele Zahlen als Programmparameter übergeben bekommen kann. Zusätzlich wird als letztes Zeichen ein „+“ oder „-“ übergeben. Lesen Sie alle Parameter ein und führen Sie eine Addition bzw. eine Subtraktion auf alle übergebenen Zahlen aus. Bei einer Subtraktion soll von der ersten Zahl subtrahiert werden. Sie können davon ausgehen, dass immer mindestens zwei Zahlen übergeben werden und dass nur die Operatoren + und - übergeben werden.
Beispiel: java Parameteruebergabe 1 2 3 + -> 6 (= 1 + 2 + 3)
              java Parameteruebergabe 10 2 3 – -> 5 (= 10 - 2 - 3)

Ich habe nun ein Programm geschrieben, dass so aussieht, allerdings bekomme ich immer den Fehler "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 0". Ich habe diesen Fehler noch nie erhalten und leider keine Ahnung, was er bedeutet, könnte mir da jemand weiterhelfen, wie ich mein Programm zum laufen bekomme? Vielen Dank!


```
public class Rechner {

  

    public static void main(String[] args) {

        double solution = 0;

        for (int i = 1; i < args.length - 1; i++) {

            solution = solution + Double.parseDouble(args);

        }

        if (args[args.length - 1].equals("+")) {

            solution = Double.parseDouble(args[0]) + solution;

        } else {

            solution = Double.parseDouble(args[0]) - solution;

        }

        System.out.println(solution);

    }

}
```


----------



## temi (11. Dez 2019)

Kannst du den Code bitte in Codetags setzen: Die drei kleinen Punkte neben dem Smiley. Sonst werden u.U. Zeichen verschluckt.

Aber generell: Es ist sinnvoll zuerst zu schauen, welche mathematische Operation verlangt wird und anschließend diese durchzuführen. Also entweder die Zahlen alle addieren oder alle der Reihe nach voneinander subtrahieren.

Vergiss es, so wie du es vorhast wird es auch funktionieren.


----------



## mihe7 (11. Dez 2019)

Java-Noob1234 hat gesagt.:


> java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 0". Ich habe diesen Fehler noch nie erhalten und leider keine Ahnung, was er bedeutet,


Naja, er bedeutet genau das, was da steht: es wurde versucht, auf das Element mit Index -1 zuzugreifen. Das geht nicht, weil es außerhalb der Arraygrenzen liegt. In dem Fall war das Array 0 Elemente lang. Nach dem Überfliegen Deines Codes würde ich sagen: Du hast das Programm ohne Angabe von Parametern aufgerufen.


----------



## Estanijan (12. Dez 2019)

mihe7 hat gesagt.:


> Naja, er bedeutet genau das, was da steht: es wurde versucht, auf das Element mit Index -1 zuzugreifen. Das geht nicht, weil es außerhalb der Arraygrenzen liegt. In dem Fall war das Array 0 Elemente lang. Nach dem Überfliegen Deines Codes würde ich sagen: Du hast das Programm ohne Angabe von Parametern aufgerufen.


Könnte man das nicht einfach heraus finden indem man ganz zu Beginn in einer if schleife prüft?


```
if (args.length > 0) {
// anweisungen, ansonsten
else {
System.err.println("keine zahl übergeben");
}
}
```

Würde das gehen? Sorry das ich mich einmische, interessiert mich aber gerade. Quasi verschachteln?


----------



## mihe7 (12. Dez 2019)

Estanijan hat gesagt.:


> Sorry das ich mich einmische


Das ist ein Forum und kein Privatgespräch. Heißt: da soll man sich einmischen  


Estanijan hat gesagt.:


> Könnte man das nicht einfach heraus finden indem man ganz zu Beginn in einer if schleife prüft?


http://if-schleife.de/ 

Und ja, das kann man natürlich so überprüfen.


----------



## temi (12. Dez 2019)

Estanijan hat gesagt.:


> Könnte man das nicht einfach heraus finden indem man ganz zu Beginn in einer if schleife prüft?



Es ist sogar sehr sinnvoll, das zu tun. Im Sinne der Aufgabe sollte allerdings geprüft werden, ob mindestens drei Argumente übergeben wurden. Und, um es vollständig zu machen, es sollte auch noch geprüft werden, ob es sich um Zahlen und um +/- handelt.

Wobei es durch die Aufgabe explizit nicht gefordert ist:


Java-Noob1234 hat gesagt.:


> Sie können davon ausgehen, dass immer mindestens zwei Zahlen übergeben werden und dass nur die Operatoren + und - übergeben werden.


----------

