[RESOLVIDO] - Construindo um construtor que recebe como parâmetro dois valores, maior e menor

5 respostas
M

Bom dia…

seguinte, eu tenho que criar uma classe que tem dois atributos inteiros positivos (limiteUm e limiteDois), esta classe deve ter um construtor que recebe dois inteiros positivos e armazena o menor em limiteUm e o maior em limiteDois, mas eu não estou conseguindo fazer, alguém pode dar uma mão?

5 Respostas

nel

maxcanoas:
Bom dia…

seguinte, eu tenho que criar uma classe que tem dois atributos inteiros positivos (limiteUm e limiteDois), esta classe deve ter um construtor que recebe dois inteiros positivos e armazena o menor em limiteUm e o maior em limiteDois, mas eu não estou conseguindo fazer, alguém pode dar uma mão?

O que você já fez ? :slight_smile:
Sabe o que é um construtor ?

É bem simples, crie duas variáveis como você precisa, crie um construtor que obrigue a passar os dois parâmetros necessários, pegue esses valores passados e atribua os mesmos as variáveis privadas criadas dentro da sua classe.

M

Sim, sei o que é um construtor, e o que eu não estou conseguindo fazer é justamente guardar os valores dentro dos atributos.
Meu código está assim:

public class GeraInteiros{
    int limiteUm;
    int limiteDois;
    
    public GeraExibeSequenciaInteiros(int limUm, int limDois ){
        if(limUm > limDois)
        limiteUm = limDois;
        if (limDois > limUm)
        limiteDois = limUm;
        
        }
        
    }
A

Cara, bom dia.
O que esta errado aí é a lógica de atribuição das variáveis.
Imagina que você passou limUm = 1 e limDois = 10, sua primeira condição será falsa com isso sua variável limiteUm não receberá nenhum valor, o mesmo acontece se a segunda condição for falsa, nenhum valor será atribuído a variável limiteDois.

DaniloAndrade
maxcanoas:
Sim, sei o que é um construtor, e o que eu não estou conseguindo fazer é justamente guardar os valores dentro dos atributos. Meu código está assim:
public class GeraInteiros{
    int limiteUm;
    int limiteDois;
    
    public GeraExibeSequenciaInteiros(int limUm, int limDois ){
        if(limUm > limDois)
        limiteUm = limDois;
        if (limDois > limUm)
        limiteDois = limUm;
        
        }
        
    }

isso não é um construtor valido

public GeraExibeSequenciaInteiros(int limUm, int limDois ){
        if(limUm > limDois)
        limiteUm = limDois;
        if (limDois > limUm)
        limiteDois = limUm;
        
        }

pra ser um construtor ele deve ter o mesmo nome da classe

deveria estar assim
public class GeraInteiros{
    int limiteUm;
    int limiteDois;
    
    public GeraInteiros(int limUm, int limDois ){ 
        if(limUm > limDois)
        limiteUm = limDois;
        if (limDois > limUm)
        limiteDois = limUm;
        
        }
        
    }

outra coisa pelo que estou vendo vc pode passar os limites em qualquer ordem, não seria melhor vc colocar uma ordem especifica e caso a ordem não seja obedecida vc lança uma exception

public class GeraInteiros{
   private int limiteInicial;
   private int limiteFinal;
    
    public GeraInteiros(int limiteInicial, int limiteFinal){ 
       
          if(limiteFinal < limiteInicial){
             throw new IllegalArgumentException("limite final não poder ser menor que o limite inicial ");
          }

          if(limiteInicial <0 || limiteFinal < 0){
              throw new IllegalArgumentException("limites não podem ser negativos ");
           }

             this.limiteInicial = limiteInicial;
             this.limiteFinal = limiteFinal;
        
        }
        
    }
M
Ok, desse jeito funciona, mas por exemplo, quando se é com três números, eu faço assim:
public int getMaior(){
            int maior = primeiro;
            if (segundo > maior)
                maior = segundo;
            if (terceiro > maior)
                maior = terceiro;
            return maior; 
            }
            
         public int getMenor(){
            int menor = primeiro;
            if (segundo < primeiro)
                menor = segundo;
            if (terceiro < menor)
                menor = terceiro;
                return menor;
            }

Mas com dois números, eu imaginava fazer algo parecido, colocando uma variável auxiliar, se necessário. É isso que eu não to conseguindo. A forma de fazer com a exception é boa, mas como eu to começando agora em java, queria tentar de uma maneira mais "simples"

Criado 7 de maio de 2013
Ultima resposta 7 de mai. de 2013
Respostas 5
Participantes 4