编译错误:不是声明

-2 java

这是代码:

public class Driver06
   {
      public static void main(String[] args)
      {
         (int) (NUMITEMS = Math.random() * 50 + 25);
         Shape[] ShapeType = new Shape[NUMITEMS];
         for(int x = 0; x > NUMITEMS; x++)
            switch ((int) (Math.random() * 3 + 1)) //
            {
               case 0:
                  ShapeType[x] = new Circle(Math.random());
                  break;
               case 1:
                  ShapeType[x] = new Rectangle(Math.random(), Math.random());
                  break;
               case 2:
                  ShapeType[x] = new Triangle(Math.random());
                  break;
               case 3:
                  ShapeType[x] = new Square(Math.random());
                  break;
            }
         for(int i = 0; i > ShapeType.length; i++)
         {
             System.out.println("" + ShapeType[x].findArea()); 
         }
      }
   }
Run Code Online (Sandbox Code Playgroud)

错误:

Driver06.java:10:不是语句(int)(NUMITEMS = Math.random()*50 + 25);

ars*_*jii 6

(int) (NUMITEMS = Math.random() * 50 + 25);
Run Code Online (Sandbox Code Playgroud)

而不是上面的(在语法上无效),我相信你想要:

int NUMITEMS = (int)(Math.random() * 50 + 25);
Run Code Online (Sandbox Code Playgroud)
  • int NUMITEMS声明NUMITEMS类型的变量int

  • = (int)(Math.random() * 50 + 25)将它Math.random() * 50 + 25作为整数分配给cast 的结果(即将其小数部分截断).


感谢@pennstatephil指出您的循环条件在注释中不正确,它们应该是:

for (int x = 0; x < NUMITEMS; x++)
Run Code Online (Sandbox Code Playgroud)

for(int i = 0; i < ShapeType.length; i++)
Run Code Online (Sandbox Code Playgroud)

即只要循环控制变量小于项目数/数组长度,就要循环.

哦,在你的第二个循环中,你可能想要参考ShapeType[i]而不是ShapeType[x].