Advertisement
airton-junior

Exercício 4 da lista para estagiários Dev

Mar 15th, 2023
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.53 KB | None | 0 0
  1. public with sharing class TempConverterLista {
  2.     private Map<String, Decimal> mapResultado = new Map<String, Decimal>();
  3.     public TempConverterLista() {}
  4.     public TempConverterLista(List<List<Object>> listaDeListas) {
  5.         this.extracaoEConversao(listaDeListas);
  6.     }
  7.  
  8.     private void extracaoEConversao(List<List<Object>> listaDeListas){
  9.         Integer i=0;
  10.         for(List<Object> listinha: listaDeListas){
  11.             String tipoDeConversao = (String)listinha[0];
  12.             Decimal tempDeEntrada = (Decimal)listinha[1];
  13.             Decimal resultado = escolheConversao(tipoDeConversao, tempDeEntrada);
  14.             //tipoDeConversao+=i;
  15.             this.mapResultado.put(i+tipoDeConversao, resultado.setScale(2));
  16.             i++;
  17.         }
  18.     }
  19.     //método de faz a conversão de celsius para fahrenheit e atribui o resultado ao atributo de
  20.     //instância chamado resultado.
  21.     private Decimal celsiusToFah(Decimal temperatura){
  22.         return (temperatura*9/5)+32;
  23.     }
  24.     //método de faz a conversão de fahrenheit para celsius e atribui o resultado ao atributo de
  25.     //instância chamado resultado.
  26.     private Decimal fahToCelsius(Decimal temperatura){
  27.         return (temperatura - 32)*5/9;
  28.     }
  29.     //método de faz a conversão de celsius para kelvin e atribui o resultado ao atributo de
  30.     //instância chamado resultado.
  31.     private Decimal celsiusToKelvin(Decimal temperatura){
  32.         return temperatura + 273.15;
  33.     }
  34.     //método de faz a conversão de kelvin para celsius e atribui o resultado ao atributo de
  35.     //instância chamado resultado.
  36.     private Decimal kelvinToCelsius(Decimal temperatura){
  37.         return temperatura - 273.15;
  38.     }
  39.     //método de faz a conversão de fahrenheit para kelvin e atribui o resultado ao atributo de
  40.     //instância chamado resultado.
  41.     private Decimal fahToKelvin(Decimal temperatura){
  42.         return (temperatura - 32) * 5/9 + 273.15;
  43.     }
  44.     //método de faz a conversão de kelvin para fahrenheit e atribui o resultado ao atributo de
  45.     //instância chamado resultado.
  46.     private Decimal kelvinToFah(Decimal temperatura){
  47.         return (temperatura - 273.15)*9/5 + 32;
  48.     }
  49.  
  50.     private Decimal escolheConversao(String conversion, Decimal tempEntrada){
  51.         switch on conversion{
  52.             when 'cf'{
  53.                 //chamada do método que converte de celsius para fahrenheit
  54.                 return celsiusToFah(tempEntrada);
  55.             }
  56.             when 'fc'{
  57.                 //chamada do método que converte de fahrenheit para celsius
  58.                 return fahToCelsius(tempEntrada);
  59.             }
  60.             when 'ck'{
  61.                 //chamada do método que converte de celsius para kelvin
  62.                 return celsiusToKelvin(tempEntrada);
  63.             }
  64.             when 'kc'{
  65.                 //chamada do método que converte de kelvin para celsius
  66.                 return kelvinToCelsius(tempEntrada);
  67.             }
  68.             when 'fk'{
  69.                 //chamada do método que converte de fahrenheit para kelvin
  70.                 return fahToKelvin(tempEntrada);
  71.             }
  72.             when 'kf'{
  73.                 //chamada do método que converte de kelvin para fahrenheit
  74.                 return kelvinToFah(tempEntrada);
  75.             }
  76.             when else{
  77.                 //esse when atribui 0 para o valor de temperatura do resultado e n/a
  78.                 //(não aplicável) em função de ter sido escolhida uma sigla que não
  79.                 //pertence ao conjunto das que devem ser admitidas para a conversão
  80.                 return 0;
  81.                
  82.             }
  83.         }
  84.  
  85.     }
  86.     public Map<String, Decimal> retornaTemp(){
  87.         return this.mapResultado;
  88.     }
  89. }
  90.  
  91. /*
  92. 4) Repetir o exercício anterior, porém com um construtor que ao invés de receber uma String que determina o tipo de conversão e um valor Decimal que deverá ser convertido, por meio de passagens de parâmetros pelo construtor, receba uma Lista de Listas (Uma lista maior que se chamará listaContainer e uma menor que se chamará listaElementos), em que cada lista que compõe um elemento (listaElementos) da lista maior (listaContainer), existam dois valores, sendo um deles, a String que determina o tipo de conversão e o outro, uma String também, que contenha o "número" que deverá ser convertido. A necessidade de termos que preencher cada lista menor (listaElementos) com dois valores do tipo String, se dá pela limitação de não podermos ter uma lista com elementos de tipos de dados diferentes. Portanto, quando pertinente, você deverá fazer a conversão de um valor Decimal para uma String e/ou de uma String para um valor Decimal. O método resultado, deverá retornar um Map dos vários resultados, sendo a chave, um número inteiro, que incrementa à cada linha do Map, e o valor correspondente à chave, um objeto que conterá dois atributos, um sendo uma String, que será o tipo de conversão e o outro atributo um Decimal com o resultado da conversão. Então, na tela Anonymous deverá ser iterado o Map resultante, para exibição dos conteúdos do objeto (que conterá 2 elementos, sendo um a String que define qual conversão foi realizada e um Decimal, que será o resultado da conversão).
  93. */
  94.  
  95. /*
  96. List<Object> listaElementos1 = new List<Object>();
  97. listaElementos1.add('cf');
  98. listaElementos1.add(30);//86
  99.  
  100. List<Object> listaElementos2 = new List<Object>();
  101. listaElementos2.add('cf');
  102. listaElementos2.add(50);//122
  103.  
  104. List<Object> listaElementos3 = new List<Object>();
  105. listaElementos3.add('fc');
  106. listaElementos3.add(86);//30
  107.  
  108. List<Object> listaElementos4 = new List<Object>();
  109. listaElementos4.add('kc');
  110. listaElementos4.add(0);//-273.15
  111.  
  112. List<Object> listaElementos5 = new List<Object>();
  113. listaElementos5.add('ck');
  114. listaElementos5.add(-273.15);//0
  115.  
  116. List<Object> listaElementos6 = new List<Object>();
  117. listaElementos6.add('fc');
  118. listaElementos6.add(122);//50
  119.  
  120. List<Object> listaElementos7 = new List<Object>();
  121. listaElementos7.add('fk');
  122. listaElementos7.add(1000);//810.93
  123.  
  124. List<Object> listaElementos8 = new List<Object>();
  125. listaElementos8.add('kf');
  126. listaElementos8.add(810.93);//1000
  127.  
  128. List<Object> listaElementos9 = new List<Object>();
  129. listaElementos9.add('br');
  130. listaElementos9.add(122);//0
  131.  
  132.  
  133. List<List<Object>> listona = new List<List<Object>>{listaElementos1, listaElementos2, listaElementos3, listaElementos4, listaElementos5, listaElementos6, listaElementos7, listaElementos8, listaElementos9};
  134.  
  135. TempConverterLista tcl = new TempConverterLista(listona);
  136. System.debug(tcl.retornaTemp());
  137.  
  138.  
  139.  
  140. */
  141.  
  142.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement