Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:0
at Rechner.Fkts.<init>(Fkts.java:38)
at de.teamanym.cmdtools.CMDAusgabe.<init>(CMDAusgabe.java:56)
at CMDToolLogin.LoginEingabe.<init>(LoginEingabe.java:20)
at de.teamanym.cmdtools.MainClass.main(MainClass.java:9)
src:
Java:
packageRechner;importjava.util.Scanner;publicclassFkts{staticdoubleZahl1;staticString eingabe;staticdouble zergebnis =0;Scanner input =newScanner(System.in);publicFkts(){System.out.println("Rechner V 0.1");System.out.println("Für Hilfe: /help");System.out.println("Wenn du loslegen willst gebe zuerst /start ein");
eingabe = input.next();if(eingabe.equalsIgnoreCase("/help")){System.out.println("Gebe zuerst 2 Zahlen an und danach ein Rechenmodul (+,-,*,:)");System.out.println("Für Fehlercodes gebe /error ein! oder eine 1 um zum Rechnen zu gelangen");}if(eingabe.equalsIgnoreCase("/error")){System.out.println("Error304: Kein vorhandenes Rechenmodul angegeben!");System.out.println("Error303: Allgemeiner Fehler!!!");System.out.println("Bei jedem Fehler bitte neustarten!");}else{System.out.println("");}for(int i =0; i<=20;i++){System.out.println("Gebe deine erste/nächste Zahl ein: ");double[]Zahl=newdouble[i];Zahl[i]= input.nextDouble();System.out.println("Bitte gebe ein Rechenmodul an (+, -, *, :)");System.out.println("Wenn du nicht zurechtkommst gebe /help ein!");
eingabe = input.next();if(eingabe.equalsIgnoreCase("+")){double ergebnisplus = zergebnis +Zahl[i];System.out.println(ergebnisplus);}elseif(eingabe.equalsIgnoreCase("-")){double ergebnisminus = zergebnis -Zahl[i];System.out.println(ergebnisminus);}elseif(eingabe.equalsIgnoreCase("*")){double ergebnismal = zergebnis *Zahl[i];System.out.println(ergebnismal);}elseif(eingabe.equalsIgnoreCase(":")){double ergebnisget = zergebnis /Zahl[i];System.out.println(ergebnisget);}elseif(!eingabe.equalsIgnoreCase("+")||!eingabe.equalsIgnoreCase("-")||!eingabe.equalsIgnoreCase("*")||!eingabe.equalsIgnoreCase(":")){System.out.println("Error304");}else{System.out.println("Error303");}}}}
Der Zweck soll sein, dass der max. 20 eingaben rechnen kann und der die ausgibt. Also dass es egal is ob er plusminus.. rechnet und ob er 5 oder 9 Zahlen miteinander verrechnet. lg
Es wäre besser, wenn du bei solchen Fehlermeldungen die betreffende Zeile kenntlich machen würdest. Ich denke mal, es ist die letzte Zeile in folgendem Fragment:
Java:
for(int i =0; i <=20; i++){System.out.println("Gebe deine erste/nächste Zahl ein: ");double[]Zahl=newdouble[i];Zahl[i]= input.nextDouble();
Das ist gleich in mehrfacher Hinsicht problematisch:
Das Array Zahl ist immer um ein Element zu klein. Beispielsweise bei i=3 erzeugst du ein Array mit drei Elementen, willst aber im vierten Element (also Index 3) etwas speichern. Das geht natürlich nicht.
Speziell beim ersten Durchlauf erstellst du ein Array das maximal 0 Elemente speichern kann. Da passt also gar nichts rein.
Du speicherst immer nur die zuletzt eingegebene Zahl in deinem Array. Warum verwendest du überhaupt ein Array, wenn du ohnehin immer nur eine Zahl benötigst?
Du erstellst in jedem Schleifendurchlauf ein neues Array und verwirfst dadurch das alte.