gpt4 book ai didi

java - 让 .set 在 Java 中使用对象数组

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:13 25 4
gpt4 key购买 nike

所以我试图制作一个程序,你输入一个半径,它会输出面积、直径等,但每当我运行该应用程序时,它就会崩溃。这是我所得到的,如果有人可以提供帮助,我将不胜感激

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
MeasureC[] mc = new MeasureC[5];
int i=0;
int p =5;
for(i=0;i<=p;i++)
{
System.out.println("What do you want the radius to be?");
double UserRad = scan.nextDouble();

mc[i].setRadius(UserRad);
mc[i].setArea();
mc[i].setDiameter();
mc[i].setCircumfrence();
System.out.println(mc[i].getRadius());
System.out.println(mc[i].getArea());
System.out.println(mc[i].getDiameter());
System.out.println(mc[i].getCircumfrence());

}

这是第二堂课:

public class MeasureC {
private double radius, area, diameter, circumfrence;

public double getRadius() {
return radius;
}

public void setRadius(double newRadius) {
radius = newRadius;
}

public double getArea() {
return area;
}

public void setArea() {
area = 3.14*radius;
}

public double getDiameter() {
return diameter;
}

public void setDiameter() {
diameter = 2*radius;
}

public double getCircumfrence() {
return circumfrence;
}

public void setCircumfrence() {
circumfrence = 3.14*(2*radius);
}

最佳答案

MeasureC[] mc = new MeasureC[5];

这不会创建 5 个 MeasureC 对象的数组,它只是在内存中为它们分配空间。因此,目前每个索引都指向 null。这意味着,在 for 循环中,当您尝试访问数组中的特定元素时,您将收到错误,如 .setRadius() 等...不是 null 的方法:

mc[i].setRadius(UserRad); // mc[i] is null 

因此,要解决此问题,您可以在每次迭代时创建 MeasureC 类的新实例并将其设置在索引处:

for(i = 0; i < p; i++) { // set to i < p as max index in your array is 4 (not 5)
mc[i] = new MeasureC();
// code...
}

关于java - 让 .set 在 Java 中使用对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58056046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com