Estoy haciendo un programa con GUI el cual realiza operaciones sobre un archivo .txt algo asi como
proceso1 #23
proceso2 #44
proceso3 #21
proceso4 #88
y tengo que calcular la media de esos valores, en un post de este foro (http://www.hackhispano.com/foro/showthread.php?t=33225) encontre algo parecido y trate de implementarlo en mi codigo pero no me dio resultado, este es mi codigo en NetBeans Lector.java:
package lector;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFileChooser;
import java.util.ArrayList;
/**
*
* @author Administrador
*/
public class LectorGUI extends javax.swing.JFrame {
/**
*
* @author djagus
*/
public class TxTFilter extends javax.swing.filechooser.FileFilter{
final static String txt= "txt";
/** Creates a new instance of XMLFilter */
public TxTFilter() {
}
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
String s = f.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
String extension = s.substring(i+1).toLowerCase();
if (txt.equals(extension)) {
return true;
} else {
return false;
}
}
return false;
}
public String getDescription() {
return "Archivos .txt";
}
}
/** Creates new form LectorGUI */
public LectorGUI() {
initComponents();
}
public static double media(Object arr[ ]) numbers)
{
double sum = 0.0;
for(int i = 0; i < arr.length ; i++)
{
sum += ((Double)arr[i]).doubleValue(); //Usas este método de la clase Double para obtener el valor encapsulado por el objeto de tipo Double. Para ello es necesario hacer un casting a (Double) ya que con esto indicas que un Objeto cualquiera va a ser tratado como un Double.
}
return sum / arr.length;
}
public static double varianza(Object arr[ ], double media) //Lo mismo con esta función
{
double sum = 0.0;
for(int i = 0; i < arr.length ; i++)
{
sum += Math.pow((((Double)arr[i]).doubleValue()) - media, 2); //idem
}
return sum / (arr.length); // array.length devuelve el número de elementos del array por lo que no es necesario restarle 1.
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstan ts.EXIT_ON_CLOSE);
jButton1.setText("Imprimir Texto");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Exit");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jLabel1.setText("Pegue su archivo de texto en la ruta C://");
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax. swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax. swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton1)
.addGap(120, 120, 120)
.addComponent(jButton2))
.addComponent(jLabel1)))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(22, 22, 22)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 351, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(242, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(25, 25, 25)
.addGroup(jPanel1Layout.createParallelGroup(javax. swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addGap(33, 33, 33)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 183, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(347, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(98, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser chooser = new JFileChooser();
chooser.setApproveButtonText("Abrir .txt");
chooser.addChoosableFileFilter(new TxTFilter());
chooser.showOpenDialog(null);
File archivo=chooser.getSelectedFile();
try {
ArrayList lista = new ArrayList();
BufferedReader reader = new BufferedReader(new FileReader(archivo));
boolean eof = false;
while (!eof) {
String linea = reader.readLine();
if (linea == null) eof = true;
else{
linea = linea.split("#")[0];
Double d = new Double(Double.parseDouble(linea)); //Creas un objeto de tipo Double, que contiene el número indicado en el fichero "read.txt"
lista.add(d); //y lo añades a la lista
}
}
reader.close();
} catch (Exception ex) {
System.out.println("Error -- " +ex.toString());
}
Object numbers[] =lista.toArray();
System.out.println("\n Resultados \n");
double aux_media = media(numbers);
System.out.println(" media : " + aux_media);
double aux_var = varianza(numbers,aux_media);
System.out.println(" varianza : " + aux_var);
System.out.println(" desv. estandar : " + Math.sqrt(aux_var));
}
// TODO add your handling code here:
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0); // TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LectorGUI().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
}
este es el main:
package lector;
/**
*
* @author Administrador
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new LectorGUI().setVisible(true);
}
}
Porfavor ruego que alguien me ayude a resolver este problema me imagino que el error se debe al orden del codigo.
Saludos y muchas gracias
Marcadores