Die Aufgabenstellung lautet wie folgt:
Schreiben Sie ein Programm, das das Volumen eines Zylinders in Abhängigkeit vom Durchmesser gestuft in Abständen von einem Millimeter absteigend auf den Bildschirm ausgibt. Eingegeben werden sollen der Start- und der Enddurchmesser (als ganze Zahl).
Ausgegeben werden soll das jeweilige Volumen. Die Höhe ist mit 100mm und PI mit 3,14159626 als Programmkonstante festzulegen. Speichern Sie zuerst die Volumina in einem entsprechend großen Feld und geben Sie das Feld ZUM SCHLUSS aus.
Falls der Enddurchmesser größer ist als der Startdurchmesser, dann sollen die Werte trotzdem in absteigender Reihe sortiert werden.
Mein Programm sieht aktuell wie oben aus. Allerdings bekomme ich immer im Compiler die Fehlermeldung
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 6"
Wenn ich den Startwert 10 und Endwert 5 verwende als Beispiel.
Ich kann mir schon meinen Fehler denken, dass es mit der Feldvariable was zu tun hat, dass ich das falsch programmiert habe. Der greift aktuell quasi auf die Durchmesserzahlen zurück, aber der soll ja hier in dem Fall auf die Feldelemente 0, 1, 2, 3, 4, 5 mit dem jeweiligen Inhalt der Durchmesser 10, 9, 8, 7, 6, 5. Aber ich weiß noch nicht, wie ich das umzusetzen habe.
Auch die richtige Reihenfolge, falls Enddurchmesser > Startdurchmesser habe ich nicht so ganz eingebracht.
Schreiben Sie ein Programm, das das Volumen eines Zylinders in Abhängigkeit vom Durchmesser gestuft in Abständen von einem Millimeter absteigend auf den Bildschirm ausgibt. Eingegeben werden sollen der Start- und der Enddurchmesser (als ganze Zahl).
Ausgegeben werden soll das jeweilige Volumen. Die Höhe ist mit 100mm und PI mit 3,14159626 als Programmkonstante festzulegen. Speichern Sie zuerst die Volumina in einem entsprechend großen Feld und geben Sie das Feld ZUM SCHLUSS aus.
Falls der Enddurchmesser größer ist als der Startdurchmesser, dann sollen die Werte trotzdem in absteigender Reihe sortiert werden.
Java:
import javax.swing.*;
public class Volumina {
public static void main(String[] args) {
final double PI = 3.1415926;
final int hoehe = 100;
String eing1 = JOptionPane.showInputDialog("Geben Sie den Startdurchmesser in [mm] ein:");
int startdurchmesser = Integer.parseInt(eing1);
String eing2 = JOptionPane.showInputDialog("Geben Sie den Enddurchmesser in [mm] ein:");
int enddurchmesser = Integer.parseInt(eing2);
int intervall = (startdurchmesser-enddurchmesser);
if(enddurchmesser>startdurchmesser) {
enddurchmesser = startdurchmesser;
}
int feldgroesse = (intervall+1);
System.out.println("Feld mit " +(intervall+1) + " Werten fuer Hoehe 100mm und Startdurchmesser " +startdurchmesser + " mm wurde berechnet");
double feld[] = new double[feldgroesse];
for (int i=startdurchmesser; i>=enddurchmesser; i--)
feld[i] = ((PI*i*i)/4)*hoehe;
int j=feldgroesse;
while (--startdurchmesser >= enddurchmesser)
System.out.println("Volumen fuer d = " + j + " mm: " + feld[j] + " mm^3");
}
}
Mein Programm sieht aktuell wie oben aus. Allerdings bekomme ich immer im Compiler die Fehlermeldung
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 6"
Wenn ich den Startwert 10 und Endwert 5 verwende als Beispiel.
Ich kann mir schon meinen Fehler denken, dass es mit der Feldvariable was zu tun hat, dass ich das falsch programmiert habe. Der greift aktuell quasi auf die Durchmesserzahlen zurück, aber der soll ja hier in dem Fall auf die Feldelemente 0, 1, 2, 3, 4, 5 mit dem jeweiligen Inhalt der Durchmesser 10, 9, 8, 7, 6, 5. Aber ich weiß noch nicht, wie ich das umzusetzen habe.
Auch die richtige Reihenfolge, falls Enddurchmesser > Startdurchmesser habe ich nicht so ganz eingebracht.