GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como setar enum nesse caso

Tags: #<Tag:0x00007f289864fdf8>

queria setar eles no array de roupa e depois mostrar eles poderiam me ajudar?

  • Classe Roupa

public class Roupa {

enum COR{
    BRANCA("BRANCA"),COLORIDA("COLORIDA");
    
    private String valorDaCor;
    COR(String valorDaCor){
        this.valorDaCor = valorDaCor;
    }
    
    public String getCor(){
        return this.valorDaCor;
    }

}

enum TAMANHO{
    P('P'),M('M'),G('G');
    
    private char valorDoTamanho;
    
    TAMANHO(char valorDoTamanho){
        this.valorDoTamanho = valorDoTamanho;
    }
    
    public char getTamanho(){
        return this.valorDoTamanho;
    }
}

enum ESTADO{
    SUJA("SUJA"),LIMPA("LIMPA");
    
    private String valorDoEstado;
    
    ESTADO(String valorDoEstado){
        this.valorDoEstado = valorDoEstado;
    }
    
    public String getEstado(){
        return this.valorDoEstado;
    }
}

}

  • Main

public class UsandoMaquinaDeLavar {
public static void main(String[] args){

    ArrayList<Roupa> todasAsRoupas = new ArrayList<Roupa>();
    
    Scanner input = new Scanner(System.in);
    
    System.out.println("Quantas Roupas Deseja Lavar?");
    int valor = Integer.parseInt(input.nextLine());
    
    for(int i = 0; i < valor; i++){
        
      
        
        System.out.println("Cor da roupa: \n1 - Branca \n2 - Colorida");
        
        String config = input.nextLine();
        COR cor;
        
        if(config.equalsIgnoreCase("Branca") || config.equalsIgnoreCase("1")){
            Enum.valueOf(COR.class, "BRANCA");
        }else if(config.equalsIgnoreCase("Colorida") || config.equalsIgnoreCase("2")){
            Enum.valueOf(COR.class, "COLORIDA");
        }else{
             System.out.println("Erro!! O valor inserido não é valido");
             break;
        }
        System.out.println("Tamanho: \n1 - P \n2 - M \n3 - G ");
        
        config = input.nextLine();
        
        TAMANHO tamanho;
        if(config.equalsIgnoreCase("P") || config.equalsIgnoreCase("1")){
            Enum.valueOf(TAMANHO.class, "P");
        }else if(config.equalsIgnoreCase("M") || config.equalsIgnoreCase("2")){
            Enum.valueOf(TAMANHO.class, "M");
        }else if(config.equalsIgnoreCase("G") || config.equalsIgnoreCase("3")){
           Enum.valueOf(TAMANHO.class, "G");
        }else{
             System.out.println("Erro!! O valor inserido não é valido");
             break;
        }
        
        System.out.println("Estado: \n1 - Suja \n2 - Limpa");
        
        config = input.nextLine();
        
        if(config.equalsIgnoreCase("Suja") || config.equalsIgnoreCase("1")){
           Enum.valueOf(ESTADO.class, "SUJA");
        }else if(config.equalsIgnoreCase("Limpa") || config.equalsIgnoreCase("2")){
            Enum.valueOf(ESTADO.class, "LIMPA");
        }else{
             System.out.println("Erro!! O valor inserido não é valido");
             break;
        }
    } 
    
    for(int i= 0; i < todasAsRoupas.size(); i++){
         System.out.println(todasAsRoupas.get(i));
    }
    
}

}

Não entendi como setar os valores para apresentar no final

Simplesmente assim:

if(config.equalsIgnoreCase("Branca") || config.equalsIgnoreCase("1")){ 
    cor = Cor.BRANCA;
}

Ou, limpando o codigo e eliminando todos estes ifs desnecessários, crias a enum com método para descodificar a cor:

enum Cor {
    BRANCA ("1"),
    COLORIDA ("2");
 
  private String codigo;

  Cor (String codigo) {
      this.codigo = codigo;
  }

  public static Cor obtemCor(String valor) {
    for (Cor c: values()){
        if (c.name().equalsIgnoreCase(a) || c.codigo.equalsIgnoreCase(a)){
            return c;
        }
     }
      return null;
   }
}

E simplesmente chamas o método:

 String config = input.nextLine();
 Cor cor = Cor.obtemCor(config);
 if (cor == null) {
    System.out.println("Erro!! O valor inserido não é valido");
    break;
 }

Mas Como eu adiciono roupa com essas características no array???

A tua classe roupa tem de ter esses atributos

 class Roupa {
       Cor cor;
       Tamanho tamanho;
       Estado estado;

  public Roupa (Cor cor, Tamanho tamanho, Estado estado) {
     this.cor = cor;
     this.tamanho = tamanho;
     this.estado = estado;
  }

 //... getters e setters

 //... enums (podem ficar aqui ou passar para classes próprias)
}

Depois, quando tiveres lido do input os valores, crias um objeto roupa e adicionas ao teu array

  Roupa roupa = new Roupa(cor, tamanho, estado);
  todasAsRoupas.add(roupa);
1 Curtida
//