Array de temperaturas

2 respostas
van_bommel
import javax.swing.JOptionPane ;
/*
7) Escrever a classe Temperatura, cujos atributos são o Array temperaturas[ ] (double)
e quantidade (int). O método construtor deve inicializar o Array (usando new) e a
quantidade (usando o método showInputDialog() da classe JOptionPane). Além disso,
devem ser criados os seguintes métodos, supondo que cada elemento do Array
temperaturas[ ] armazena a temperatura medida em um determinado dia:
*/

    public class Temperatura {
   // tamanho do array 
      private int tamanho ;
   //declaro o array de temperaturas 
      private double [ ] Array_temp;
   //construtor 
       public Temperatura (){
      // entrada de dados 
         String aux = JOptionPane.showInputDialog ( " Quantos dias ");
      // casting transformo á variavel "String aux" , em inteiro
      // e armazena no tamanho  ..
         tamanho = Integer.parseInt(aux);
      // construtor Array instacia "cria" o tamanho que usuário inseriu.
         Array_temp = new double [tamanho ];
      }
    /*  a) um método de acesso que retorne o Array e outro método de acesso
     que recebe como parâmetro uma posição válida (valor inteiro) do Array e
     retorna a temperatura relativa àquela posição do Array temperaturas[ ];
    */
    
       public double [ ] getArray (){
         return Array_temp ;
      }
      
       public double getTemperaturaPosicaoDoArray(int indice ){
         return Array_temp[  indice ];
        
      
      }
      /*b) um método modificador que recebe como parâmetros uma posição
     válida (inteiro) e o valor da temperatura a ser armazenada naquela 
     posição do Array temperaturas[ ];   
        */
     
       public void setTemperatura(int indice , double valor ){
         Array_temp[  indice ]= valor ;
       
      }
     /* c) um método para inserir todos os valores de temperatura
      no Array temperaturas[ ],usando o método showInputDialog(),
     da classe JOptionPane;
    */
   
       public void EntradaValor(){
         int i = 0;
         while ( i <  tamanho){
            String aux = JOptionPane.showInputDialog ( " Entre com a temperatura  ");
            Array_temp[i]= Double.parseDouble(aux);
         
         
            i ++ ;
         
         }
         
        
        
      }
     // d) um método para exibir todos os valores de temperatura inseridos no Array
   //temperaturas[ ], usando o método showMessageDialog(), da classe JOptionPane;
      
      
       public void ExibirTudo() {
         int i = 0 ;
         String saida =  "";
         while ( i < tamanho) {
            saida = saida +  "indice " +i+":"+ Array_temp [ i] +"\n";
            JOptionPane.showMessageDialog( null , saida );
            i++;
         }
      }
      
    //e) um método que determine e retorne a menor temperatura armazenada
    // no Array temperaturas[ ];
   
       public double menorTemperatura (){
         double menortemp = Array_temp[0];
         int i = 0;
         while ( i < tamanho ) {
            if ( menortemp > Array_temp[i]  ){
               menortemp = Array_temp[i];
            }
            i++ ;
         
         }
         return menortemp ;
      }
      
     // f) um método que determine e retorne a maior temperatura armazenada no Array
   //temperaturas[ ];
   
       public double maiorTemperatura(){
         double maiorTemp = 0;
         int i = 0 ;
         while  ( i < tamanho ){
            if ( maiorTemp < Array_temp[i]) {
               maiorTemp = Array_temp[i];
            }
         }
         return maiorTemp ;
        
      }
   // g) um método que calcule e retorne a temperatura média;
   
       public double mediaDasTemperaturas (){
         double media = 0 ;
         double soma = 0 ;
         int i = 0 ;
         while ( i < tamanho ) {
            soma = soma + Array_temp[i] ;
            media = soma / tamanho ;
            i++ ;
         
         
         }
         return media ;
      }
   	
   //	h) um método que calcule e retorne o número de dias em que a
   // temperatura foi superior á  20 graus.
       public int nDiasTempAcimaDe20 () {
         int  quantidadeDias = 0;
         int i = 0 ;
         while ( i < tamanho ) {
            if ( Array_temp[i] > 20.0 ) {
               quantidadeDias ++;
                         
            
            }
            i++ ;
         
         }
         return quantidadeDias ;
      }
    
   }

iaeee pessoas é a melhor forma de fazerr ?
abraaçoos
estou começando agora num faz nem 3 meses q comecei a programar .
duvidaa ------------------- como faço para fazer o main ???

2 Respostas

TiD

Olá van bommel,

Algumas observações!

  • No metodo getTemperaturaPosicaoDoArray(int indice) voce simplesmente pega o indice passado como parametro e joga no array - lembre-se que seu método vai receber um valor de qualquer usuário do seu sistema, ou mesmo outra classe desenvolvida por outra pessoa que não sabe o tamanho do array (olha o encapsulamento aí). Portanto voce deve verificar se o indice passado é válido (está dentro dos limites do array). O ideal é tratar isso com um try/catch e se o indice for invalido lançar a excecao ArrayIndexOutOfBounds (pesquise sobre isso).

  • Mesma coisa para o metodo set, pois voce recebe o indice e indexa diretamente.

  • No metodo EntradaValor, uma dica:

String aux = JOptionPane.showInputDialog ( " Entre com a temperatura  ");

Seria legal indicar ao usuario algo do tipo ‘Entre com a temperatura para o dia i’ … senao o usuario pode se perder com tantos JoptionPane em sequencia e nao saber mais qual dia ele ta preenchendo.

  • No metodo mediaDasTemperaturas, desnecessario voce calcular a media a cada iteração no laço. simplesmente faça a soma de todas as posicões e ao final do laço divida pelo tamanho do mesmo.

  • No método nDiasTempAcimaDe20 (e em mais alguns que observei isso), você declara (int i = 0) pro while. Beleza, sem problemas. Mas é mais recomendável nesse caso fazer um for(int i = 0; i < tamanho ; i ++) - note que nesse caso o escopo da variável i se restringe ao laço do for, e não poderá ser referenciada fora dele provendo possíveis valores errados. Da forma como está usando, se um trecho de codigo abaixo do while referenciar o i ele irá retornar o numero de iterações - isso pode ser útil em algumas situações, mas não pra esse caso.

Um abraço!

Giovanni_Ritchie

O “main”

//TestaTemperatura.java
public class TestaTemperatura {
     public static void main(String[] args) {
          Temperatura t=new Temperatua();
           //daí vai testando os métodos da sua class
     }
}

Abrç :wink:

Criado 3 de junho de 2009
Ultima resposta 3 de jun. de 2009
Respostas 2
Participantes 3