Тогда как такой код???
мейн
Код:

package mathprogram;
import java.util.Scanner;
public class MathProgram {
public static void main(String[] arg) {
Triangle triangle = new Triangle();
// triangle.inputSides();
Scanner input = new Scanner(System.in);
System.out.println("Введите первую сторону");
float sideA = input.nextFloat();
System.out.println("Введите вторую сторону");
float sideB = input.nextFloat();
System.out.println("Введите третью сторону");
float sideC = input.nextFloat();
triangle.setSides(sideA, sideB, sideC);
triangle.getSquare();
if (triangle.getSquare() <= 0) {
System.out.println("Введены некорректные данные");
}else{
System.out.println("Площадь треугольника равна "+triangle.getSquare()+" кв.ед.");
}
}
}
методарий
Код:

package mathprogram;
public class Triangle {
private float aSide;
private float bSide;
private float cSide;
private boolean setSides;
private boolean planarity;
private boolean rightTriangle;
private float square;
public boolean setSides(float sideA, float sideB, float sideC) {
setSides = false;
if (sideA > 0 && sideB > 0 && sideC > 0) {
aSide = sideA;
bSide = sideB;
cSide = sideC;
setSides = true;
}
return setSides;
}
private boolean planarity() {
planarity = false;
if (aSide + bSide > cSide && bSide + cSide > aSide && aSide + cSide > bSide) {
planarity = true;
}
return planarity;
}
private boolean rightTriangle() {
rightTriangle = false;
if (aSide * aSide + bSide * bSide == cSide * cSide || aSide * aSide + cSide * cSide == bSide * bSide || bSide * bSide + cSide * cSide == aSide * aSide) {
rightTriangle = true;
}
return rightTriangle;
}
private float geronSquare() {
if (planarity == true) {
float perimeter = (aSide + bSide + cSide) / 2;
square = (float) Math.sqrt(perimeter * ((perimeter - aSide) * (perimeter - bSide) * (perimeter - cSide)));
}
return square;
}
private float rightTriangleSquare() {
if (planarity == true && rightTriangle == true) {
square = aSide * bSide / 2;
}
return square;
}
private float square() {
if (planarity == true) {
if (rightTriangle == true) {
rightTriangleSquare();
} else {
geronSquare();
}
}
return 0;
}
public float getGeronSquare() {
planarity();
geronSquare();
return square;
}
public float getRightTriangleSquare() {
planarity();
rightTriangleSquare();
return square;
}
public boolean isPlanarity() {
return planarity;
}
public boolean isRightTriangle() {
return rightTriangle;
}
public float getSquare() {
planarity();
rightTriangle();
square();
return square;
}
public float getaSide() {
return aSide;
}
public float getbSide() {
return bSide;
}
public float getcSide() {
return cSide;
}
}
Все защищено. Лишнего ничего нет. Тявкает то что ему сказано. Может и не тявкать если надо. Это уже мы выбираем. Стороны вводятся через сеттеры. Внутренние методы работают только то что надо, а именно считают и не вызываю других методов. Можно получить любые интересующие данные благодаря геттерам. Принудительно что то в логике изменить нельзя. Также класс сам считает более подходящим способом.