JAVA Programming Implement the equals method of the Arrow class. Two arrows are
ID: 3921561 • Letter: J
Question
JAVA Programming
Implement the equals method of the Arrow class. Two arrows are equal when they have the same starting point and direction.
(Only can work at "Work Here"
----
Arrow.Java
public class Arrow
{
private Point start;
private String direction;
/**
Constructs an arrow.
@param x the x-position
@param y the y-position
@param direction a compass direction N E S W NE NW SE SW
*/
public Arrow(int x, int y, String direction)
{
start = new Point();
start.move(x, y);
this.direction = direction;
}
/**
Checks whether this arrow is equal to another.
@param otherObject another arrow
@return true if this arrow and otherObject have the
same start and direction.
*/
public boolean equals(Object otherObject)
{
Work here
}
}
----Point.JAVA
public class Point
{
private int x;
private int y;
/**
Constructs a point at the origin.
*/
public Point()
{
this.x = 0;
this.y = 0;
}
/**
Moves this point by a given amount.
@param dx the x-distance
@param dy the y-distance
*/
public void move(int dx, int dy)
{
x = x + dx;
y = y + dy;
}
/**
Checks whether this point is equal to another.
@param otherObject another point
@return true if this point and otherObject have the
same position.
*/
public boolean equals(Object otherObject)
{
Point other = (Point) otherObject;
return x == other.x
&& y == other.y;
}
}
--ArrowTester.JAVA
public class ArrowTester
{
public static void main(String[] args)
{
Arrow arrow1 = new Arrow(1, 2, "SE");
Object arrow2 = new Arrow(1, 2, "W");
Arrow arrow3 = new Arrow(1, 0, "SE");
Arrow arrow4 = new Arrow(0, 2, "SE");
Arrow arrow5 = new Arrow(1, 2, "SEE".substring(0, 2));
System.out.println(arrow1.equals(arrow1));
System.out.println("Expected: true");
System.out.println(arrow1.equals(arrow2));
System.out.println("Expected: false");
System.out.println(arrow1.equals(arrow3));
System.out.println("Expected: false");
System.out.println(arrow1.equals(arrow4));
System.out.println("Expected: false");
System.out.println(arrow1.equals(arrow5));
System.out.println("Expected: true");
}
}
Explanation / Answer
Hi,
I have implemented the method equals() and highlighted the code changes below.
public class Arrow
{
private Point start;
private String direction;
/**
Constructs an arrow.
@param x the x-position
@param y the y-position
@param direction a compass direction N E S W NE NW SE SW
*/
public Arrow(int x, int y, String direction)
{
start = new Point();
start.move(x, y);
this.direction = direction;
}
/**
Checks whether this arrow is equal to another.
@param otherObject another arrow
@return true if this arrow and otherObject have the
same start and direction.
*/
public boolean equals(Object otherObject)
{
Arrow a = (Arrow)otherObject;
if(start.equals(a.start) && direction.equals(a.direction)){
return true;
}
else{
return false;
}
}
}
class Point
{
private int x;
private int y;
/**
Constructs a point at the origin.
*/
public Point()
{
this.x = 0;
this.y = 0;
}
/**
Moves this point by a given amount.
@param dx the x-distance
@param dy the y-distance
*/
public void move(int dx, int dy)
{
x = x + dx;
y = y + dy;
}
/**
Checks whether this point is equal to another.
@param otherObject another point
@return true if this point and otherObject have the
same position.
*/
public boolean equals(Object otherObject)
{
Point other = (Point) otherObject;
return x == other.x
&& y == other.y;
}
}
public class ArrowTester
{
public static void main(String[] args)
{
Arrow arrow1 = new Arrow(1, 2, "SE");
Object arrow2 = new Arrow(1, 2, "W");
Arrow arrow3 = new Arrow(1, 0, "SE");
Arrow arrow4 = new Arrow(0, 2, "SE");
Arrow arrow5 = new Arrow(1, 2, "SEE".substring(0, 2));
System.out.println(arrow1.equals(arrow1));
System.out.println("Expected: true");
System.out.println(arrow1.equals(arrow2));
System.out.println("Expected: false");
System.out.println(arrow1.equals(arrow3));
System.out.println("Expected: false");
System.out.println(arrow1.equals(arrow4));
System.out.println("Expected: false");
System.out.println(arrow1.equals(arrow5));
System.out.println("Expected: true");
}
}
Output:
true
Expected: true
false
Expected: false
false
Expected: false
false
Expected: false
true
Expected: true
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.