尝试完成一些方法,我认为对于有一点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
答案 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方法。
对于sinkSwimmer
和moveSwimmer
方法,只需调整相应的字段即可。与您对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;
}
...