完成一些简单的方法

时间:2011-12-08 04:06:50

标签: java methods

尝试完成一些方法,我认为对于有一点Java经验的人来说应该是直截了当的。我是一个总菜刀:)

完成方法setXPosShark(),它将shark的x位置设置为方法的int争论。

    /**
    * Sets the x-position of the shark to the value of the argument
    */
    public void setXPosShark(int x)
    {
      // to be completed for part(i)
    }

这会是:

    shark.setXPos(x);

完成方法setXPosSwimmer(),将游泳者腿部的x位置设置为参数x,身体的x位置设置为x加10,将头部的x位置设置为x加46。

    /**
    * Sets the x-position of each of the legs, body and head of the swimmer. 
    * The x position of the legs is set to the argument, the x position of 
    * the body is set to the argument plus 10, and the x position of the  
    * head is set to the argument plus 46.
    */

    public void setXPosSwimmer(int x)
    {
      // to be completed for part(ii)       
    }

完成方法sinkSwimmer()。该方法应将游泳者的每个组件(头部,身体和腿部)向下移动50个单位,并使每个组件的颜色变为蓝色。

    /**
    * Makes the swimmer appear to disappear by increasing the 
    * y-position of each of the head, body and legs by 50, and 
    * turning their colour blue.
    */   
    public void sinkSwimmer()
    {
      //to be completed for part(iii)
    }

完成方法moveSimmer(),使游泳者的组成部分将一个单位移动到当前位置的右侧。

    /**
    * Causes the swimmer to move one unit to the right of its current position. 
    */
    public void moveSwimmer()
    {
      // to be completed for part(iv)
    }

非常感谢任何有帮助的人。我正在全力以赴地尝试完成一个非正式的任务(即没有评分),这样我就可以在即将到来的任务之前得到反馈。谢谢,阿里

EDIT 我的猜测是

对于第二个:

    this.leg.setPosition(x); 
    this.body.setPosition(x+10); 
    this.head.setPosition(x+46); 

第三个:

    this.legs.setPosition(y-50);  
    this.body.setPosition(y-50); 
    this.head.setPosition(y-50); 
第四:

    this.legs.(this.legs() );

根本不太确定这个。

这是我正在使用的完整代码(相当大)的pastebin链接: http://pastebin.com/mF06jjSv

1 个答案:

答案 0 :(得分:0)

(1)通过完成该方法,您需要填写代码以完成该方法。所以我假设你有一个鲨鱼类可能看起来像这样:

public class Shark {

    // ....all the methods you mentioned above....

}

您的类由两个名为fields和methods的组件组成。方法负责执行操作和修改类字段的数据。方法setXPosShark(int x)将负责更改存储鲨鱼X位置的字段。

以下是第一种方法的示例:

public class Shark {

     private int xPostion; // <-- this is a field.

     public Shark(int x, int y) {
          this.xPosition = x;
          // complete for the y.
     }

     public void setXPosShark(int x) {
          this.xPosition = x;
     }

}

注意:请注意该字段是如何隐私的。建议类中的所有字段都是私有的,并且这些字段中的数据通过方法进行交互。这将保护数据并允许您在存储数据之前验证和操作数据。在这种情况下,不需要验证。但在第二个问题中,您需要在存储之前修改数据,方法是添加10。

在第二个问题中可以看到保持字段私密的重要性。

假设您有类似的类结构:

public class Swimmer {
    // total of 6 fields required for x and y positions of head, body and legs.
    private int headXPosition;
    private int bodyXPosition;
    private int legsXPosition;

    // Constructor should set each field to a default value (possibly 0).

   // Example of a setter method.
    public void setXPosSwimmer(int x) {
        this.headXPosition = x+46;
        // other two fields omitted... 
    }


    // Example of a getter method.
    public int getHeadXPosition() {
        return this.headXPosition 
    }

}

setXPosSwimmer(int x)中,你没有做太多的事情来验证传入的x值,因为你在存储它之前做了一些数据操作。操作方面是增加46到头部和10到腿和脚。

如果您将headXPosition或任何其他字段公开,则另一个程序员(例如)可以设置headXPosition而不添加+46,这可能会导致您的程序出现问题。因为这是一个不会成为问题的课堂作业,但在现实世界中,当制作API(可以与其他程序交互的程序)时,您可能希望保护程序对象中的数据。

关于课程的快速说明:

名为set ...()的方法称为setter,它们负责将数据设置为类的字段。由于数据是私有的,因此其他类无法访问它。如果你试图调用shark.xPosition;由于xPosition是私有的,因此会出现编译时错误。因此,您需要编写一个方法来获取(或检索)数据。这些方法称为getter,并使用约定get ....()来返回数据。因此,对于Shark类,您可能需要编写一个getXPosition()方法:return this.xPosition

对于第三个问题,您需要在Swimmer类中添加另外三个字段来存储Y位置。您还需要编写相应的setter和getter方法。

对于sinkSwimmermoveSwimmer方法,只需调整相应的字段即可。与您对setXPosSwimmer(int x)方法的操作相同。

此外,在查看您的代码后,我建议您将内容拆分为单独的* .java文件,以便更容易使用。从你的初学者开始,我也会使用一个可以帮助你理解对象的IDE。我建议使用BlueJ,可以免费下载:http://www.bluej.org/

此外,如果你不想在Swimmer类中有6个字段,你可以使用int的原始数组:

...

private int[] head;
private int[] legs;
private int[] body;

// Constructor:
public Swimmer() {
    this.head = new int[2];
    // and so on... replacing .head with the other fields names.
}
...

int[] head = new int[2]分别创建一个包含两个空格[0,1]的数组。 0表示X位置,1表示Y位置。这通过调用this.head [0]返回一个表示x位置的int,依此类推。

因此设置头部的X位置就像这样:

...
public void setXPosSwimmer(int x) {
    this.head[0] = x+46;
    this.legs[0] = x+10;
    this.body[0] = x+10;
}
...