0 votos
por (100 puntos) en Java
Hola que tal soy nuevo en este foro, nunca he intentado resolver mis dudas en uno, puesto que pienso que tardarían en contestar pero bueno haber que pasa.

Estoy tratando de hacer la distribucion de poisson en JAVA pero con clases o metodos y mandarlas a traer en mi jframe pero no me sale jeje n_n. Al final lo unico que hice fue solo colocar mi clase para resolver la factorial y hacer todas los demas calculos en mi jframe.

ESTA ES MI CLASE AQUI ES DONDE ME GUSTARIA QUE TODA MI ECUACION ESTUVIERA:

<pre lang='java'>
public class clase_Poisson {

     // metodo
   public static double eventoE;                    //Es el numero  de ocurrencias del evento o fenómeno ESPERADO
   public double  factorial(double eventoE) {       //el metodo se llama factorial
  if (eventoE==0)                                   //si el evento es 0
    return 1;                                       //regresara pero con 1
  else                                              //si no
    return eventoE * factorial(eventoE-1);          //elevento regresara y se multiplicara por el factorial (eventoE)y restarara 1 al valor de eventoE
}
   //fin metodo

AL PRESIONAR MI BOTON CALCULAR en mi Jframe (AQUI ES DONDE ME GUSTARIA Q SOLO MANDARA A trAER EL METODO E IMPRIMIR MI RESULtADO:

<pre lang='java'>
public class Experimento_Poisson extends javax.swing.JFrame {
public static double E;   //
public static double P;
public static double rfinal;
public static double e=2.718;
public static double x;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
 E=Integer.parseInt(t1.getText());
 P=Integer.parseInt(t2.getText());

 clase_Poisson r=new clase_Poisson();

 x= ( Math.exp(Math.log(P)*E)) * (Math.exp(Math.log(e)*-(P)) );//esta es la parte del numerador de la ecuacion q no pude meter en un solo metodo
 rfinal=x/r.factorial(E);
 JOptionPane.showMessageDialog(this,  "La probabilidad es:" +rfinal);

}

De esta manera obtengo el resultado correcto, pero si intento meter toda la ecuacion en un solo metodo y despues simplemente escribir mis variables int o double, no me corre

Por cierto espero me haya salido eso de colocar codigo fuente de tipo java en esta duda, si no, pues lo siento. Gracias por adelantado


2 Respuestas

0 votos
por (100 puntos)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
 clase_Poisson r=new clase_Poisson();     // Declaramos a "r" como la clase "clase_Poisson"
  if( t1.getText().equals( "" ) || t2.getText().equals( "" ))  // Si alguno de los 2 campos esta vacio, habra un mensaje q pida llenarlos
  {
            JOptionPane.showMessageDialog(this, "Por favor llene todos los campos con una cantidad numerica");
            t2.requestFocus();            // colocara el cursos en el jTextfield 2
  }
  else{
 E=Integer.parseInt(t1.getText());        // Variable = Eventos esperados
 P=Integer.parseInt(t2.getText());        // Variable = Eventos Promedio
 x= ( Math.exp(Math.log(P)*E)) * (Math.exp(Math.log(e)*-(P)) );   // De acuerdo a la ecuacion de Poisson, el numerador de la misma esta expresada en esta linea de codigo; el resultado se guarda en "x"
 rfinal=x/r.factorial(E);                 // La variable "rfinal" almacenara el resultado de dividir "x" entre la funcion "factorial" de la clase "clase_Poisson"
 JOptionPane.showMessageDialog(this,  "La probabilidad es:" +rfinal);   // Mensaje cpn el resultado
 t2.requestFocus();                       // colocara el cursos en el jTextfield 2
  }
}

Este es el mismo código que el anterior pero comentado, Saludos  n_n


0 votos
por (8.5k puntos)
Buenas,

Yo dejaría las clases así:



public class Experimento_Poisson extends javax.swing.JFrame {
public static double E;   //
public static double P;
public static double x;

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
     E=Integer.parseInt(t1.getText());
     P=Integer.parseInt(t2.getText());

     Poisson poisson=new Poisson();

     JOptionPane.showMessageDialog(this,  "La probabilidad es:" + poisson.calcular(E, P));

    }
}


public class Poisson {

     // metodo
   public static double eventoE;                    //Es el numero  de ocurrencias del evento o fenómeno ESPERADO

   public double calcular(double E, double P)
   {
       double x = ( Math.exp(Math.log(P)*E)) * (Math.exp(Math.log(Math.E)*-(P)) );//esta es la parte del numerador de la ecuacion q no pude meter en un solo metodo
       return  x / factorial(E);
   }

   public double  factorial(double eventoE) {       //el metodo se llama factorial
      if (eventoE==0)                                   //si el evento es 0
        return 1;                                       //regresara pero con 1
      else                                              //si no

      return eventoE * factorial(eventoE-1);          //elevento regresara y se multiplicara por el factorial (eventoE)y restarara 1 al valor de eventoE
   }

}

Preguntas relacionadas

0 votos
1 respuesta
preguntado por mine77 (20 puntos) Ene 28, 2016 en Java
0 votos
1 respuesta
preguntado por Subliminal30 (40 puntos) Ene 31, 2020 en Java
0 votos
0 respuestas
0 votos
5 respuestas
preguntado por Hectorin (60 puntos) Ene 28, 2016 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...