Hallo Forum,
ich verzweifel einfach an der Lösung dieses Fehlers. Die Java Konsole sagt folgendes:
Was muss ich ändern?
ich verzweifel einfach an der Lösung dieses Fehlers. Die Java Konsole sagt folgendes:
Code:
Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 5
at Median.btBerechnen_ActionPerformed(Median.java:56)
at Median$1.actionPerformed(Median.java:25)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Was muss ich ändern?
Java:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Median extends Applet {
// Anfang Attribute
private TextArea taWerte = new TextArea("", 1, 1, TextArea.SCROLLBARS_NONE);
private Button btBerechnen = new Button();
private Label lbErgebnis = new Label();
// Ende Attribute
public void init() {
Panel cp = new Panel(null);
cp.setBounds(0, 0, 456, 190);
add(cp);
// Anfang Komponenten
taWerte.setBounds(8, 8, 433, 89);
taWerte.setText("");
cp.add(taWerte);
btBerechnen.setBounds(8, 104, 435, 25);
btBerechnen.setLabel("Median berechnen");
btBerechnen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btBerechnen_ActionPerformed(evt);
}
});
cp.add(btBerechnen);
lbErgebnis.setBounds(8, 136, 429, 16);
lbErgebnis.setText("");
lbErgebnis.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
lbErgebnis.setAlignment(Label.CENTER);
cp.add(lbErgebnis);
// Ende Komponenten
}
// Anfang Methoden
public void btBerechnen_ActionPerformed(ActionEvent evt) {
String eingabe = taWerte.getText();
// Kommata durch Punkte ersetzten
eingabe = eingabe.replace(",",".");
int eingabeLaenge = eingabe.length();
int anzahlElemente;
double median;
// String aus dem TF an Leerzeichen trennen und Elemente in AR
String stWerte[] = eingabe.split(" ");
// Elemente im String AR zählen, um Größe des Double AR zu erhalten
anzahlElemente = stWerte.length;
double Werte[] = new double[anzahlElemente];
// Elemente aus dem String AR in den Double AR kopieren mit Fehlerbehandlung
for(int i = 0; i <= anzahlElemente; i++) {
try{
Werte[i] = Double.valueOf(stWerte[i]);
}
catch(NumberFormatException e) {
lbErgebnis.setText("Bitte geben Sie nur Zahlen getrennt von Leerzeichen ein.");
}
}
// Array sortieren
sortiere(Werte);
// Hat der Array eine ungerade oder gerade Länge
if(anzahlElemente % 2 == 0) {
// Gerade
double dbAnzahlElemente = (double) anzahlElemente;
double dbhaelfteminuseins = dbAnzahlElemente - 0.5;
double dbhaelftepluseins = dbAnzahlElemente + 0.5;
int haelfteminuseins = (int) dbhaelfteminuseins;
int haelftepluseins = (int) dbhaelftepluseins;
median = (Werte[haelfteminuseins] + Werte[haelftepluseins]) / 2;
} else {
// Ungerade
median = Werte[anzahlElemente / 2];
}
// Double in String umwandeln, um in das LB schreiben zu können
String sMedian = String.valueOf(median);
lbErgebnis.setText("Der Median beträgt " + sMedian);
}
public void sortiere(double[] unsortierteWerte) {
}
// Ende Methoden
}