Назначение требует, чтобы пользователь вводил 3 радиуса и 3 записи высоты, которые я собираю в массиве, а затем определяю объем для каждого. Я застрял в массиве. По какой-то причине я получаю ArrayIndexOutOfBoundsException
.Домашнее задание Java Array
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
(CylinderTest.java:19)
Я получаю сообщение об ошибке на последнем (шестое или третье место). Я не понимаю, что я делаю неправильно. Мне трудно понять логику, это моя самая большая проблема.
Вот CylinderTest (основной)
import javax.swing.*;
//Driver class
public class CylinderTest
{
public static void main(String[] args)
{
Cylinder[] volume = new Cylinder[3];
for (int counter = 0; counter < 6; counter++)
{
double radius = Double.parseDouble(JOptionPane
.showInputDialog("Enter the radius"));
double height = Double.parseDouble(JOptionPane
.showInputDialog("Enter the height"));
volume[counter++] = new Cylinder(radius, height);
}
String display = "Radius\tHeight\n";
for (Cylinder i : volume)
{
if (i != null)
display += i.toString() + "\n";
}
JOptionPane.showMessageDialog(null, display);
}
}
и здесь класс Cylinder
public class Cylinder
{
// variables
public static final double PI = 3.14159;
private double radius, height, volume;
// constructor
public Cylinder(double radius, double height)
{
this.radius = radius;
this.height = height;
}
// default constructor
public Cylinder()
{this(0, 0);}
// accessors and mutators (getters and setters)
public double getRadius()
{return radius;}
public void setRadius(double radius)
{this.radius = radius;}
public double getHeight()
{return height;}
public void setHeight(double height)
{this.height = height;}
public double getVolume()
{return volume;}
public void setVolume(double volume)
{this.volume = volume;}
// Volume method to compute the volume of the cylinder
public double volume()
{return PI * radius * radius * height;}
public String toString()
{return volume + "\t" + radius + "\t" + height; }
}
Первоначально, если вы это сделаете: 'volume [counter ++]' Тогда вы будете перемещать счетчик дважды, один в том [counter ++] и другой в инструкции for '; counter ++) ' – porfiriopartida
Для следующей справки по отладке' CylinderTest.java: 19' относится к классу ('CylinderTest.java') и номер строки в этом классе (' 19'), где происходит ошибка. Какая линия № 19 точно? – nhgrif
Это была хорошая попытка задать вопрос о домашнем задании. Я думаю, что то, что предлагает nhgrif, отсутствует. В этом случае класс CylinderTest не имеет значения, поскольку проблема связана с массивом. Я не думаю, что он заслуживает понижения. – porfiriopartida