Sou iniciante em Java e autodidata. Vi o enunciado de um exercício na Internet pedindo para criar um programa para comparação de tipos de triângulos e fiz o código abaixo. Usei o Netbeans e Notepad++. Está funcionando, mas não tenho certeza se é o correto a se fazer. Agradeço opiniões e sugestões.
Tem algo errado com seus blocos de comando. Ficaria assim:
if ((v1 < v2 + v3) & & (v2 < v1 + v3) & & (v3 < v1 + v2)){
if ((v1 == v2) & & (v2 == v3)){
txtfinal.setText("TRIANGULO EQUILATERO");
txtfinal1.setText("Três lados são iguais");
}
else if ((v1 == v2) | | (v1 == v3) | | (v2 == v3)){
txtfinal.setText("TRIANGULO ISOSCELES");
txtfinal1.setText("Dois lados são iguais");
}
else {
txtfinal.setText("TRIANGULO ESCALENO");
txtfinal1.setText("Três lados são diferentes");
}
}
else {
txtfinal.setText("VALORES NÃO FORMAM UM TRIANGULO");
txtfinal1.setText("DIGITE OUTROS VALORES");
}
Fique atento a quando abrir e quando fechar os {}, se não você perde o controle do fluxo do código e vai ter erros tanto de compilação quanto de resultados. xD
Eu também criaria uma classe Triangulo, com três atributos, um para cada lado, aí deixaria essa lógica de comparação dentro dessa classe.
public class Triangulo {
public static enum Tipo {
EQUILATERO, ISOCELES, ESCALENO;
}
public final double a;
public final double b;
public final double c;
public Triangulo(double a, double b, double c) {
if ((a < b + c) && (b < a + c) && (c < a + b)) {
this.a = a;
this.b = b;
this.c = c;
} else {
String mensagem = String.format("Valores (a=%f, b=%f, c=%f) não formam um triangulo", a, b, c);
throw new IllegalArgumentException(mensagem);
}
}
public Tipo getTipo() {
if (tresLadosIguais()) {
return Tipo.EQUILATERO;
}
if (doisLadosIguais()) {
return Tipo.ISOCELES;
}
return Tipo.ESCALENO;
}
private boolean doisLadosIguais() {
return a == b || a == c || b == c;
}
private boolean tresLadosIguais() {
return a == b && b == c;
}
public String getDescricao() {
switch (getTipo()) {
case EQUILATERO:
return "Três lados são iguais";
case ISOCELES:
return "Dois lados são iguais";
case ESCALENO:
default:
return "Três lados são diferentes";
}
}
}
Eu ainda não entendo bem esses códigos que envolvem POO, mas estou estudando.
Vou aproveitar sua sugestão para estudar e tentar entender um pouco mais.
Valeu.