Usando array

5 respostas
G

Pessoal, estou com uma duvida… preciso fazer uma classe que receba n valores e depois calule a media e o desvio padrão, neste pensei vou usar um array, mas nao sei com fazer isso, será q alguém poderia me dar uma dica sobre isso ou uma outra forma de fazer isso?

valeu.
Gabriel

5 Respostas

D

Bom, cara o que você pode fazer é sei la usa um JOptionPane para receber os valores ai você armazena em um Array, ai calcula a media
ou você pode fazer uma lista encadeada…alguma coisa do tipo!

Falou!

G

tenho q impressão de q com lista nao irei conseguir… entao pensei em array, mas nao sei como fazer um array sem saber antes quantas posições terá o mesmo, pq o usuario pode informar n’s… valores, fiz assim para testar, mas está dando alguns erros…

import javax.swing.<em>;

import java.awt.</em>;

import java.awt.event.*;

public class Estatistica extends JFrame implements ActionListener, FocusListener{

JLabel lblValor = new JLabel(Informe o valor:);

JLabel lblResult = new JLabel(Resultado:);

JLabel lblDesvio = new JLabel();

JLabel lblMedia = new JLabel();

JTextField txtValor = new JTextField(12);

JButton cmdArmazenar = new JButton(Armazenar);

JButton cmdCalcular = new JButton(Calcular);

JButton cmdSair = new JButton(Sair);

//JTextArea txtArea = new JTextArea(10,25);

static int cont=0;

int [] vetor = new int[2];
public Estatistica(){
	// criando container
	Container c = getContentPane();
	// criando layout padrão
	c.setLayout(new FlowLayout());
	c.add(lblValor);
	c.add(txtValor);
	c.add(cmdArmazenar);
	c.add(cmdCalcular);
	c.add(cmdSair);
	c.add(lblResult);
	c.add(lblDesvio);
	c.add(lblMedia);
	
	//JScrollPane sp = new JScrollPane(txtArea);
    //c.add(sp);
    
	cmdArmazenar.addActionListener(this);
	cmdCalcular.addActionListener(this);
	
}
public void actionPerformed(ActionEvent ev){
		Object obj = ev.getSource();
		if(obj==cmdArmazenar){
			vetor[cont] = Integer.parseInt(txtValor.getText());
			txtValor.setText("");
			txtValor.requestFocus();
			cont++;		
		}
		else if(obj==cmdCalcular){
			int total = vetor.length;
			int i, acum=0;
			float media=0;
			for(i=0;i&lt;=total;i++){
				System.out.println(vetor[i]+"\n");
				acum=acum+vetor[i];
			}
			media = acum/total;
			//String retorno = String.valueOf(media);
			//lblMedia.setText(media);
			System.out.println(media);
		}
}
public void focusGained(FocusEvent f){ 
	// estou implementando o metodo pq pertence a interface FocusListener, mas nao vou implementar nada nele.
} 

// metodo de acao para o evento focus
public void focusLost(FocusEvent fo){
	//
}
	
public static void main(String args[]){
	Estatistica C = new Estatistica();
	C.setSize(300,300);
	C.setLocation(300,250);
	C.setTitle("Calculo de Médias");
	C.setResizable(false);
	C.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	C.show();
}

}

R

Oi !!
Vc só quer que imprima a média na tela ou será necessário mostrar os valores que vc inseriu ??
Eu pensei em uma variavel para acumular o valor e outra para contar quantas entradas tiveram(contador), depois é só dividir o valor acumulado pelo contador!

Será que é isso ?? :roll:
Qualquer coisa posta aí que a gente tenta resolver !
Atts, Renata

D

Cara, fiz rapidinho aqui a media!

import javax.swing.*;
import java.math.*;
public class Calcula {

	public static void main(String[] args) {
		int recebe = 0;
		float total = 0;
		float subtotaldes = 0;
		float totaldes = 0;
		recebe = (Integer.parseInt(JOptionPane.showInputDialog("Digite o numero de valores: ")));
		int numelem[] = new int[recebe];
		for(int i = 0; i < recebe;i++){
			numelem[i] = (Integer.parseInt(JOptionPane.showInputDialog("Digite o valor da" +  " " + (i + 1) + " " + "variavel")));
			total = total + numelem[i];
		}
			total = total/recebe;
			JOptionPane.showMessageDialog(null,"A media é:" + total);
				
	}
}
G

dumestiko, estou muito agradecido pela sua ajuda, mas vou ter q abusar um pouco mais, na verdade nao queria q o usuário informasse quantos numeros eu vai inserir, queria q ele fosse informando até a hora que quisesse, tipo um vetor dinamico…

outra coisa, como eu faço para um float aparecer com 2 casas decimais?

Criado 18 de maio de 2005
Ultima resposta 18 de mai. de 2005
Respostas 5
Participantes 3