Java 公共课迪斯科灯光帮助

Java 公共课迪斯科灯光帮助,java,Java,如果有人能给我指出正确的方向,我会非常感激 我已经粘贴了我需要完成的全部代码,但我需要以下方法的帮助:public voidchangeColour(Circle aCircle),这意味着允许随机更改圆圈的颜色,如果0出现,圆圈的灯光应更改为红色,1表示绿色,2表示紫色 public class DiscoLight { /* instance variables */ private Circle light; // simulates a circular disco li

如果有人能给我指出正确的方向,我会非常感激

我已经粘贴了我需要完成的全部代码,但我需要以下方法的帮助:public void
changeColour(Circle aCircle)
,这意味着允许随机更改圆圈的颜色,如果0出现,圆圈的灯光应更改为红色,1表示绿色,2表示紫色

public class DiscoLight
{
   /* instance variables */
   private Circle light;   // simulates a circular disco light in the Shapes window
   private Random randomNumberGenerator;

   /**
    * Default constructor for objects of class DiscoLight
    */
   public DiscoLight()
   {
      super();
      this.randomNumberGenerator = new Random();           
   }


   /**
    * Returns a randomly generated int between 0 (inclusive) 
    * and number (exclusive). For example if number is 6,
    * the method will return one of 0, 1, 2, 3, 4, or 5.
    */
   public int getRandomInt(int number)
   {
      return this.randomNumberGenerator.nextInt(number);
   }


   /** 
    * student to write code and comment here for setLight(Circle) for Q4(i)
    */
   public void setLight(Circle aCircle)
   {
       this.light = aCircle;

   }


   /**
    * student to write code and comment here for getLight() for Q4(i)
    */
   public Circle getLight()
   {
       return this.light;
   }

   /** 
    * Sets the argument to have a diameter of 50, an xPos 
    * of 122, a yPos of 162 and the colour GREEN.
    * The method then sets the receiver's instance variable
    * light, to the argument aCircle.
    */ 
   public void addLight(Circle aCircle)
   {
      //Student to write code here, Q4(ii)
      this.light = aCircle;
      this.light.setDiameter(50);
      this.light.setXPos(122);
      this.light.setYPos(162);
      this.light.setColour(OUColour.GREEN);
   }


   /** 
    * Randomly sets the colour of the instance variable 
    * light to red, green, or purple.
    */  
   public void changeColour(Circle aCircle)
   {
       //student to write code here, Q4(iii)
       if (getRandomInt() == 0)
       {
           this.light.setColour(OUColour.RED);
       }
       if (this.getRandomInt().equals(1))
       {
           this.light.setColour(OUColour.GREEN);
       }
       else
       if (this.getRandomInt().equals(2))
       {
            this.light.setColour(OUColour.PURPLE);
       }
   }


   /** 
    * Grows the diameter of the circle referenced by the 
    * receiver's instance variable light, to the argument size.  
    * The diameter is incremented in steps of 2,
    * the xPos and yPos are decremented in steps of 1 until the
    * diameter reaches the value given by size. 
    * Between each step there is a random colour change.  The message 
    * delay(anInt) is used to slow down the graphical interface, as required.
    */   
   public void grow(int size)
   {   
       //student to write code here, Q4(iv) 
   }


   /** 
    * Shrinks the diameter of the circle referenced by the 
    * receiver's instance variable light, to the argument size.  
    * The diameter is decremented in steps of 2,
    * the xPos and yPos are incremented in steps of 1 until the
    * diameter reaches the value given by size. 
    * Between each step there is a random colour change.  The message 
    * delay(anInt) is used to slow down the graphical interface, as required.
    */     
   public void shrink(int size)
   {   
       //student to write code here, Q4(v)
   }


   /** 
    * Expands the diameter of the light by the amount given by
    * sizeIncrease (changing colour as it grows).
    * 
    * The method then contracts the light until it reaches its
    * original size (changing colour as it shrinks).
    */     
   public void lightCycle(int sizeIncrease)
   {
      //student to write code here, Q4(vi)
   }


   /** 
    * Prompts the user for number of growing and shrinking
    * cycles. Then prompts the user for the number of units
    * by which to increase the diameter of light.
    * Method then performs the requested growing and 
    * shrinking cycles.
    */     
   public void runLight()
   {  
    //student to write code here, Q4(vii)
   }  


   /**
    * Causes execution to pause by time number of milliseconds
    */
   private void delay(int time)
   {
      try
      {
         Thread.sleep(time); 
      }
      catch (Exception e)
      {
         System.out.println(e);
      } 
   }

}

在下面的第一行调用
getRandomInt()
时,您忘记了传递一个参数
//student to write code here
。不过,您的编译器应该已经指出了这一点

getRandomInt()
方法上方的文档注释告诉您它作为参数的期望值,以及作为返回值的期望值

另外,如果您想让指示灯变红、变绿或变紫的几率相等,则只需调用一次
getRandomInt()
。将值存储在变量中,并使用switch语句打开正确的指示灯:

int randomValue = getRandomInt(/* I am not telling you what to put here */);

switch (randomValue) {
    case 0: light.setColour(OUColour.RED); break;
    case 1: light.setColour(OUColour.GREEN); break;
    case 2: light.setColour(OUColour.PURPLE); break;
}

方法
getRandomInt
返回一个
int
,因此不能使用
equals
进行比较。使用:

if (getRandomInt(3) == 1) {
  ...
}

你只需要打一次电话。将随机整数存储在变量中,并将其值与所需值进行比较。

您多次调用getRandomInt,每次都返回一个新的(随机)值。 应该在方法开始时调用它一次,然后检查它是0、1还是2

问候
Guillaume

您可能希望使用一些代码块使您的文章更易于阅读。。。将每行代码缩进4个空格,你很可能会得到一个答案:)你拼写的颜色错了。甘道夫,这就是我们在池塘这边拼写的方式…@J-P-我知道我只是在咆哮:)嗨,甘道夫,下一部分我做了以下的公共空白增长(int-size){while(int-I=0;I /** * Randomly sets the colour of the instance variable * light to red, green, or purple. */ public void changeColour(Circle aCircle) { int i = getRandomInt(3); if (i == 0) { this.light.setColour(OUColour.RED); } else if (i == 1) { this.light.setColour(OUColour.GREEN); } else { this.light.setColour(OUColour.PURPLE); } }