Classes ContaTel e Triang - Exercício da Faculdade, Poderiam Corrigir ou Confirmar?

Boa tarde galera. Estou aprendendo Java e tive um Ex. da Faculdade em que meu professor pediu duas classes.
Conforme ele pediu então seguem anexo as explicações e meus códigos. Estou mudando a forma de utilizar os IFs (estudando como funciona em java o IF &&).
Então, se possível, apontarem erros?

  • Algumas dúvidas: para comparar variáveis DOUBLE e INT só usando o == mesmo? O Equals é sómente para String?

Desde já, muito obrigado pessoal!

Triangulo

  • Lado1 : double Medida do Lado 1
  • Lado2 : double Medida do Lado 2
  • Lado3 : double Medida do Lado 3
  • Triangulo( ) Fornecer um estado inicial ao objeto tendo como parâmetros de entrada as medidas dos lados
  • calcPerimetro( ) Calcula e devolve o perímetro
  • obterTipo( ) Devolve o tipo do triângulo de acordo com os valores definidos abaixo:
    1 - triângulo equilátero (todos os lados iguais)
    2 - triângulo isósceles (dois lados iguais)
    3 - triângulo escaleno (todos lados diferentes)

[code]public class AplicTriang { //01
private double Lado1;
private double Lado2;
private double Lado3;

public void Triangulo(double vL1, double vL2, double vL3){
	Lado1 = vL1;
	Lado2 = vL2;
	Lado3 = vL3;
}
public double CalcPerimetro(){
            double perimetro;
	perimetro = Lado1 + Lado2 + Lado3;
            return perimetro;
}
    
public int obterTipo(int Tipo){
        if (Lado1 == Lado2){
		if (Lado2 == Lado3){
			if (Lado3 == Lado1){
				Tipo = 1; //L1 = L2 = L3 = L1
			}
		} else {
			Tipo = 2; //L1 = L2 <> L3
		}
	} else if (Lado1 == Lado3){
		if (Lado3 == Lado2){
			if (Lado2 == Lado1){
				Tipo = 1; // L1 = L3 = L2 = L1
			}
		} else {
			Tipo = 2; //L1 = L3 <> L2
		}
	} else if (Lado2 == Lado3){
		if (Lado3 == Lado1){
			if (Lado1 == Lado2){
				Tipo = 1; //L2 = L3 = L1 = L2
			}
		} else {
			Tipo = 2; //L2 = L3 <> L1
		}
	} else {
		Tipo = 3; //L1 <> L2 <> L3
	}
        return Tipo;
}

}[/code]

ContaTelefonica

  • Numero : String Número do Telefone
  • Tipo : int Tipo do Telefone (1- Residencial 2 ? Comercial )
  • QtdePulsos : int Quantidade de Pulsos
  • QtdeInter : int Quantidade de Interurbanos (em minutos)
  • QtdeServDesp : int Quantidade de Serviço de Despertador
  • ContaTelefonica( ) Fornece um estado inicial ao objeto instanciado tendo como parâmetro de entrada o número e o tipo de telefone.
  • setPulso( ) Tem como parâmetro de entrada o número de pulsos
  • setInterurbano( ) Tem como parâmetro de entrada a quantidade de interurbanos
  • setDespertador( ) Tem como parâmetro de entrada a quantidade de serviço de despertador
  • calcValorConta( ) Calcula e devolve o valor da conta telefônica. Onde:
    Conta = Taxa + Total Pulsos +
    Total Inter + Total Serv Desp
    ? Taxa : Residencial = R$ 10,00
    Comercial = R$ 15,00
    ? Total Pulsos :
    - Acima de 90 pulsos, R$ 0,05 por pulso excedente
    ? Total Inter: R$ 0,08 por segundo de interurbano
    ? Total Serv Desp: R$ 2,00 por serviço de despertador utilizado

[code]public class ContaTelefonica {
private String Numero;
private int Tipo;
private int QtdePulsos;
private int QtdeInter;
private int QtdeServDesp;

public ContaTelefonica(String vnTel, int vTipo){
    Numero = vnTel;
    Tipo = vTipo;
}
public void setPulso(int vnPulsos){
    QtdePulsos = vnPulsos;
}
public void setInterurbano(int vnInter){
    QtdeInter = vnInter;
}
public void setDespertador(int vnServ){
    QtdeServDesp = vnServ;
}
public double calcValorConta(){
    double Conta = 0;
    double Taxa = 0;
    double TotalPulsos = 0;
    double TotalInter = 0;
    double TotalServDesp = 0;
    //Valor da Taxa
    if (Tipo==1){
        Taxa = 10.00;
    } else if (Tipo==2){
        Taxa = 15.00;
    } //IF Valor da Taxa
    if (QtdePulsos > 90){
        TotalPulsos = (QtdePulsos - 90) * 0.05;
    }
    TotalInter = QtdeInter * 0.08;
    TotalServDesp = QtdeServDesp * 2.00;
    Conta = Taxa + TotalPulsos + TotalInter + TotalServDesp;
    return Conta;
}

}[/code]

Para mim no visual está certo.
Só tá fora do padrão sua nomeclatura para variáveis.

private double Lado1;

Variáveis por padrão començam com com letra minúscula. Somente Classe começam com maiúsculo.

EX:

double lado1;
String sobreNome;

Variáveis que são nomes-compostos após a 1ª, as proxímas começam maiúscula.


Todo OBJETO você compara com equals() e compareTo()… porém os tipos primitivos do java: int, double, float, byte, char, long, boolean e short você compara com ==, !=, <, >.
Salvo a exceção caso você queira descobrir se o OBJETO é nulo. Dai você usa if(OBJETO == null) e não if(OBJETO.equals(null)).

Lembrando que…

double é primitivo… comparar com ==, !=, <, >…
Double é Objeto… compara com equals() e compareTo()…

Abraço!!!

Olá amigo, a lógica está certinha. Só falta alguns detalhes para seu código ficar mais legível.

Por exemplo, nessa linha:

public double CalcPerimetro(){ double perimetro; // esta variavel, vc pode declarar junto com as outras(Lado1,Lado2,Lado3) perimetro = Lado1 + Lado2 + Lado3; return perimetro; }
O seu método obterTipo(), você pode usar este método que vou te passar como exemplo:

    public int triangulo(int l1, int l2, int l3){
    	
    	if(( l1 == l2) && (l2==l3)){
    		Tipo = 1;
    	}
    	else if (( l1==l2) || (l1==l3) || (l2==l3) ){
    		Tipo = 2;
    	}
    	else{
    		Tipo =3; 
    	}

    	return Tipo;

    }

No seu método calcValorConta(), vc pode declarar as variaveis, junto com as outras(Numero,Tipo, QtdePulsos, etc…)

public class ContaTelefonica {  
    private String Numero;  
    private int Tipo;  
    private int QtdePulsos;  
    private int QtdeInter;  
    private int QtdeServDesp; 
    private double Conta = 0;  
    private double Taxa = 0;  
    private double TotalPulsos = 0;  
    private double TotalInter = 0;  
    private double TotalServDesp = 0;  
    public double calcValorConta(){  
         
        //E aqui você só atribui valor a ela, zerando ela, ao inves de declarar elas todas as vezes que invocar este método.
        Conta = 0;  
        Taxa = 0;  
        TotalPulsos = 0;  
        TotalInter = 0;  
        TotalServDesp = 0;  

entendeu? vlw amigo, boa sorte no trabalho!