编译错误:不是声明

时间:2014-05-14 15:32:43

标签: 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()); 
         }
      }
   }

错误:

  

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

2 个答案:

答案 0 :(得分:6)

(int) (NUMITEMS = Math.random() * 50 + 25);

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

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

  • = (int)(Math.random() * 50 + 25)Math.random() * 50 + 25的结果分配为整数(即​​其小数部分被截断)。


感谢@pennstatephil在评论中指出你的循环条件不正确,它们应该是:

for (int x = 0; x < NUMITEMS; x++)

for(int i = 0; i < ShapeType.length; i++)

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

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

答案 1 :(得分:0)

键入时:

for(int x = 0; x > NUMITEMS; x++){

}

这个for循环以x = 0开始,每次在x值处加+1,并且此循环在x&gt;时起作用。 NUMITEMS。循环从x = 0开始,它立即停止,因为x不大于NUMITEMS。