現在、シェイプクラスを含むクラシックシェイププログラムを実行しています。円や長方形のオブジェクトを問題なく作成できます。しかし、すべてのオブジェクトの周囲または面積を取得すると、すべてのオブジェクトがnullであることがわかります。コードは次のとおりです。
//ケースメニュー選択アクション
ここでは、インスタンス変数と配列です
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);
}
}
形状配列インデックスに固定数を指定しようとしましたが、それでもnullオブジェクトを取得します。また、固定インデックスを使用してforループを削除しようとしましたが、それでもnullオブジェクトを取得します。