gpt4 book ai didi

java - 当我尝试获取周长时,为什么我的所有形状对象都为空?

转载 作者:行者123 更新时间:2023-12-01 05:05:06 24 4
gpt4 key购买 nike

现在我正在做涉及形状类的经典形状程序。我可以毫无问题地创建圆形或矩形对象。但是当我获得所有对象的周长或面积时,结果发现所有对象都是空的。这是代码:

//案例菜单选择 Action

这里是实例变量和数组

private int menu_select;
private int i=0;
private Shape[] s = new Shape[10];

这是菜单选项

public static void display_menu()
{
System.out.print("Choose an option:\n"+
"1-Add a new circle\n"+
"2-Add a new rectangle\n"+
"3-Delete all shapes\n"+
"4-Scale all shapes\n"+
"5-Display perimeter of all shapes\n"+
"6-Display the area of all shapes\n"+
"7-Enter scale factor\n"+
"8-Exit program\n");
}

这是菜单代码

这里是开关

//Case menu selection actions
public void select_case()
{

if(i<=10)
{
switch (menu_select)
{


case 1: Circle c = new Circle(1);
s[i]=c;
i++;
break;
case 2: Rectangle r = new Rectangle(1,1);
s[i]=r;
i++;
break;

case 3: s=null;
i=0;
break;
case 4: Scanner input = new Scanner(System.in);
double d = input.nextDouble();
for(int i=0; i<s.length; i++)
{
s[i].setScaleFactor(d);
}
break;
case 5: for(int i=0; i<s.length; i++)
{
if(s[i] != null)
{
System.out.println(s[i].getPerimeter());
}
}
break;
case 6: for(int i=0; i<s.length; i++)
{
System.out.println(s[i].getArea());
}
break;
case 7: //Enter scale factor

//No need for a case 8 since while loop terminates it.
default: System.out.println("Number must be 1-8");

}
}
}

这里是主要方法

public static void main(String args[])
{
Menu m;
do
{
Menu.display_menu();
m = new Menu(0);

}
while(m.getMenu_Select() != 8);



}

}

我尝试给形状数组索引一个固定的数字,但我仍然得到一个空对象。我还尝试删除带有固定索引的 for 循环,但仍然得到空对象。

最佳答案

您将在循环的每次迭代中创建一个新的 Menu 对象!

    {
Menu.display_menu();
m = new Menu(0); // here!

}

不要这样做,因为对此对象所做的任何更改都不会影响下一个对象或占用内存。

在循环之前创建一个 Menu 对象,然后在循环中调用其方法

关于java - 当我尝试获取周长时,为什么我的所有形状对象都为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830287/

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