I just started learning Java and am having difficulty with understanding classes. One of my most recent assignments was to create a class called Triangle that would - given user input from the main method - take in the input to test if the hypothetical "triangle" is equilateral, isosceles, or scalene and then return that to main. I was able to get the program to work.
However, I did not follow the assignment's implementation guidelines, which specified having two additional methods that calculated largest and smallest side-length. I am wondering, after the fact, if anyone can look at what I did and let me know if they can see and or explain - in beginner terms - why having those two methods would be needed if it works without them (i.e. is my program somehow at a disadvantage by nature of NOT having them) and if so, what was I doing wrong that kept throwing errors when I tried to implement those methods?
I'll include both the assignment guidelines (for reference since I do not assume anyone is a mind reader) and then my code:
The assignment guidelines:
Your assignment is to write a class definition (not a program, there is no main method) named Triangle (saved in a file Triangle.java). Triangle has 3 instance variables: int side1, side2, side3; The class Triangle must include the following constructors and methods: (If your class does not contain any of the following methods, points will be deducted).
public Triangle (int s1, int s2, int s3)
- Sets up a triangle with the specified side lengths.
private int largest()
- Returns the length of the longest side of the triangle. This is a helper method.
private int shortest()
- Returns the length of the shortest side of the triangle. This is a helper method.
public boolean is_equilateral()
- Determines whether a triangle is equilateral. If the longest side is equal to the shortest side, then the triangle is equilateral.
public boolean is_isosceles()
- Determines whether a triangle is isosceles. Any (and at least) two sides must be equal.
public boolean is_scalene()
- Determines whether a triangle is scalene. No two sides are equal.
public String toString()
- Prints the sides of the triangle.
My code:
public class Triangle {
private int side1, side2, side3; // 3 sides for user-input of triangle side length
public Triangle (int s1, int s2, int s3){ // instance variables
side1 = s1;
side2 = s2;
side3 = s3;
}
// My largest and shortest helper methods never got off the ground
// I left them in for kicks and giggles as comments
// private int largest(int s1, int s2, int s3) { <------ Why are these supposed to be declared as private?
//
// int max = Math.max(Math.max(s1, s2), s3); // and is_scalene to determine what type of
// return max;
// }
// private int shortest(int s1, int s2, int s3) {
// // all the other is_x methods below
// int min = Math.min(Math.min(s1, s2), s3);
// return min;
// }
public boolean is_equilateral() { // These methods will return a true or false back to main()
int max = Math.max(Math.max(side1, side2),side3); // Because I couldn't get largest/smallest
int min = Math.min(Math.min(side1, side2), side3); // to work, I opted to use Java's Math.max/min
// methods instead.
boolean answer = false; // default answer set to false
if (max == min) // if the largest # is also equal to the smallest # (i.e. all equal)
// then true else false
{
answer = true;
}
else
{
answer = false;
}
return answer;
}
public boolean is_isosceles() {
boolean answer = false;
if(side1 == side2 || side1 == side3 || side2 == side3)
{
answer = true; // if any 2 sides are equal then true, else false
}
else
{
answer = false;
}
return answer;
}
public boolean is_scalene() {
boolean answer = false;
if(side1 != side2 && side2 != side3)
{
answer = true; // if all #'s are different, then true, else false
}
else
{
answer = false;
}
return answer;
}
public String toString() { // print results on same line
return "" + this.side1 + " " + this.side2 + " " + this.side3 + "\n\n";
}
}
// Then the test file that we use to ensure that the class is working is below
import java.util.Scanner;
public class Assignment4
{
//===========================================================
// Create and determine properties of various triangles.
//===========================================================
public static void main (String[] args)
{
Scanner console = new Scanner(System.in);
int num1, num2, num3;
String another;
// repeat until the user enter 'n'
do
{
// get the input
System.out.println("Enter the sides of the triangle: ");
num1 = console.nextInt();
num2 = console.nextInt();
num3 = console.nextInt();
// create the Triangle
Triangle myTriangle = new Triangle (num1, num2, num3);
// print the Triangle
System.out.println(myTriangle.toString() + " triangle:");
//check the isosceles
if (myTriangle.is_isosceles())
System.out.println("It is isosceles");
else
System.out.println("It is not isosceles");
//check the equilateral
if (myTriangle.is_equilateral())
System.out.println("It is equilateral");
else
System.out.println("It is not a equilateral");
//check the scalene
if (myTriangle.is_scalene())
System.out.println("It is scalene");
else
System.out.println("It is not scalene");
// find if the user want to repeat
System.out.println();
System.out.print("Check another Triangle (y/n)? ");
another = console.next();
} while (another.equalsIgnoreCase("y"));
} // method main
} // class Assignment4
is_equilateral()
instead of the conventionalisEquilateral()
, andlargest()
instead oflongest()
. \$\endgroup\$