Como faço para comparar um atributo dentro de um objeto que está dentro de um vetor?

3 respostas Resolvido
yuseirender

Olá pessoal tudo bem?
então, tenho uma duvida em uma questão em java, como faço para comparar um atributo que está dentro de um objeto e este objeto se encontra em um vetor?

na problematica eu tenho que desenvolver uma classe motor com seus atributos, e logo apos devo criar um método ligar() e um método desligar() que alteram o atributo ligado
no método construtor se deve instanciar o atributo ligado para o valor false

depois da classe motor deve ser feita a classe MotorDemo para testar a classe motor e fazer as seguintes operações: criar um vetor com 5 objeto da classe motor
ligar 3 motores a sua escolha
e percorrer o vetor de motores e informar as potências dos motores que estiverem desligado

porem quando rodo o codigo, é mostrado tudo para mim

Github:

Motor.java:
public class Motor
{

String nome;
    double potencia;
    boolean ligado;            
    
    public Motor(String nome, double pontencia, boolean ligado) {
        this.nome = nome;
        this.potencia = pontencia;
        this.ligado = ligado;
        ligado=false;
    }
    
    public String getNome()
    {
        
        return nome;
        
    }
    
    public void setNome(String nome)
    {
        
        this.nome = nome;
        
    }
    
    public double getPotencia()
    {
        
        return potencia;
        
    }        
    
    public void setPotencia(double pontencia)
    {
        
        this.potencia = potencia;
        
    }
    
    public boolean getLigado()
    {
        
        return ligado;
        
    }
    
    public boolean setLigado(boolean ligado)
    {
        
        return this.ligado = ligado;
        
    }        
    
    public boolean Ligar()
    {
        
        return this.ligado = true;
        
    }
    
    public boolean Desligar()
    {
        
        return this.ligado=false;
        
    }
    
    public void mostrar()
    {
        
        System.out.println("|O modelo do motor é: " +nome+ "| a potencia do motor é: " +potencia+ "| e o estado do motor é: " +ligado);
        
    }        
}

MotorDemo.java
public class MotorDemo
{

public static void main(String[] args) 
    {
        Motor m[] = new Motor[5];
        
        m[0] = new Motor("BMW",2.0,true);
        m[1] = new Motor("AUDI",2.0,true);
        m[2] = new Motor("FIAT",1.3,true);
        m[3] = new Motor("CITROEN",1.6,false);
        m[4] = new Motor("TOYOTA",2.0,false);
            
            for(Motor mot1:m)
            {
                
                if(mot1.equals(mot1))
                {
                    
                    mot1.mostrar();
                    
                }    
                
            }    
    }
    
}

3 Respostas

RoinujNosde
Solucao aceita

Esse if é sempre true. São o mesmo objeto…

Se você quiser comparar o modelo e mostrar os desligados:

for (Motor motor : m) { //poderia chamar esse m de motores, né?
    if (motor.getNome().equals("FIAT")) {
        motor.ligar();
    }
    if (!motor.getLigado()) {//a convenção é usar o prefixo is em booleans, ex.: isLigado()
        motor.mostrar();//mostrando os desligados
    }
}
yuseirender

no é pra percorrer o vetor e informar a potencia dos motores que estiverem desligados

yuseirender

Obrigado amigo, ajudou mto!

Criado 30 de março de 2021
Ultima resposta 30 de mar. de 2021
Respostas 3
Participantes 2