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?
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
Gabriel_FilhoPJ
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…
importjavax.swing.<em>;importjava.awt.</em>;importjava.awt.event.*;publicclassEstatisticaextendsJFrameimplementsActionListener,FocusListener{JLabellblValor=newJLabel(“Informeovalor:”);JLabellblResult=newJLabel(“Resultado:”);JLabellblDesvio=newJLabel();JLabellblMedia=newJLabel();JTextFieldtxtValor=newJTextField(12);JButtoncmdArmazenar=newJButton(“Armazenar”);JButtoncmdCalcular=newJButton(“Calcular”);JButtoncmdSair=newJButton(“Sair”);//JTextArea txtArea = new JTextArea(10,25);staticintcont=0;int[]vetor=newint[2];
publicEstatistica(){// criando containerContainerc=getContentPane();// criando layout padrãoc.setLayout(newFlowLayout());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);}publicvoidactionPerformed(ActionEventev){Objectobj=ev.getSource();if(obj==cmdArmazenar){vetor[cont]=Integer.parseInt(txtValor.getText());txtValor.setText("");txtValor.requestFocus();cont++;}elseif(obj==cmdCalcular){inttotal=vetor.length;inti,acum=0;floatmedia=0;for(i=0;i<=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);}}publicvoidfocusGained(FocusEventf){// estou implementando o metodo pq pertence a interface FocusListener, mas nao vou implementar nada nele.}// metodo de acao para o evento focuspublicvoidfocusLost(FocusEventfo){//}publicstaticvoidmain(Stringargs[]){EstatisticaC=newEstatistica();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
renatadickiePJ
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
dumesticoPJ
Cara, fiz rapidinho aqui a media!
importjavax.swing.*;importjava.math.*;publicclassCalcula{publicstaticvoidmain(String[]args){intrecebe=0;floattotal=0;floatsubtotaldes=0;floattotaldes=0;recebe=(Integer.parseInt(JOptionPane.showInputDialog("Digite o numero de valores: ")));intnumelem[]=newint[recebe];for(inti=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
Gabriel_FilhoPJ
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?