Discussions
Categories
- 197K All Categories
- 2.5K Data
- 546 Big Data Appliance
- 1.9K Data Science
- 450.8K Databases
- 221.9K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 552 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 556 SQLcl
- 4K SQL Developer Data Modeler
- 187.2K SQL & PL/SQL
- 21.4K SQL Developer
- 296.3K Development
- 17 Developer Projects
- 139 Programming Languages
- 293K Development Tools
- 110 DevOps
- 3.1K QA/Testing
- 646.1K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 158 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.2K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 19 Java Essentials
- 162 Java 8 Questions
- 86K Java Programming
- 81 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 205 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 468 LiveLabs
- 39 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 175 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 233 Portuguese
Can someone help me with equals()?

Im new at Java so i dont understand too much. Im studing computer engineering and our teacher asked us to complete the followin code:
// Represents a rectangle
public class Rectangle {
// Initializes a new rectangle with the values passed by parameter .
// Throws IllegalArgumentException if a a negative value is passed to any of
// the dimensions .
public Rectangle ( int base , int height ) { }
// Copy constructor
public Rectangle ( Rectangle r ) { }
// Getters
public int getBase () { }
public int getHeight () { }
// Setters . Throw IllegalArgumentException if the parameters are negative .
public void setBase ( int base ) { }
public void setHeight ( int height ) { }
// Return true if the rectangle is a square
public boolean isSquare () { }
// Calculate the area of the rectangle .
public int area () { }
// Calculate the perimeter of the rectangle .
public int perimeter () { }
// Calculate the length of the diagonal
public double diagonal () { }
// Turn this rectangle 90 degrees ( changing base by height ).
public void turn () { } // Ensure that this rectangle is oriented horizontally ( the base is greater // or equal than the height ).
public void putHorizontal () { } // Ensure that this rectangle is oriented vertically ( the height is greater // or equal than the base ).
public void putVertical () { }
// Two rectangles are equal if the base and the height are the same . // It does not take into account if the rectangle is rotated .
public boolean equals ( Object obj ) { }
// It complies with the hashCode contract and is consistent with the equals .
public int hashCode () { } }
I made it to the followin point:
package e3;
// Represents a rectangle
public class Rectangle {
private int height;
private int base;
// Initializes a new rectangle with the values passed by parameter .
// Throws IllegalArgumentException if a a negative value is passed to any of
// the dimensions .
public Rectangle ( int base , int height ) {
if (base <= 0 || height <= 0) {
throw new IllegalArgumentException();
}
this.base=base;
this.height=height;
}
// Copy constructor
public Rectangle ( Rectangle r ) {
this.base=r.base;
this.height=r.height;
}
// Getters
public int getBase () {
return base;
}
public int getHeight () {
return height;
}
// Setters . Throw IllegalArgumentException if the parameters are negative .
public void setBase ( int base ) {
if (base < 0) {
throw new IllegalArgumentException();
}
this.base = base;
}
public void setHeight ( int height ) {
if ( height < 0) {
throw new IllegalArgumentException();
}
this.height = height;
}
// Return true if the rectangle is a square
public boolean isSquare () {
if(height==base){
return true;
}
return false;
}
// Calculate the area of the rectangle .
public int area () {
int area;
area = base*height;
return area;
}
// Calculate the perimeter of the rectangle .
public int perimeter () {
int perimeter;
perimeter =(2*height)+(2*base);
return perimeter;
}
// Calculate the length of the diagonal
public double diagonal () {
int a;
double diagonal;
a=((base*base)+(height*height));
diagonal = Math.sqrt(a);
return diagonal;
}
// Turn this rectangle 90 degrees ( changing base by height ).
public void turn () {
int aux;
aux=base;
base=height;
height=aux;
}
// Ensure that this rectangle is oriented horizontally ( the base is greater
// or equal than the height ).
public void putHorizontal () {
if (base<height){
int aux;
aux=base;
base=height;
height=aux;
}
}
// Ensure that this rectangle is oriented vertically ( the height is greater
// or equal than the base ).
public void putVertical () {
if (height<base){
int aux;
aux=base;
base=height;
height=aux;
}
}
// Two rectangles are equal if the base and the height are the same .
// It does not take into account if the rectangle is rotated .
public boolean equals ( Object obj ) {
Rectangle r=(Rectangle)obj;
return r.getBase().equals(this.getBase());
}
// It complies with the hashCode contract and is consistent with the equals .
public int hashCode () {
return 0;
}
}
But i cannot understand the behaviour of the method equals() so i dont know how to continue. Can anyone help me? thank you.
Answers
-
Hello!
At first you have to understand primitive types and it equality
At second there are plenty information about equals and hashCode (for example https://www.baeldung.com/java-equals-hashcode-contracts )
There is a hint from teacher:
// Two rectangles are equal if the base and the height are the same .
// It does not take into account if the rectangle is rotated .
You have to compare base and height of the rectangles, but at first you need to check that object is Rectangle
if (obj instanceof Rectangle) {
do something
} else {
//obj is not Rectangle
return false;
}