. I have to do Algorithm of the backpack and I can not match the text boxes to the variables

0
private void btnGenerarBeneficioActionPerformed(java.awt.event.ActionEvent evt) {                                                    

    //GENERANDO UN VALOR ALEATORIO PARA EL BENEFICIO
    //beneficio1:
    try{
        int num1= (int)spibenef1.getValue();
        int num2= (int)spibenef2.getValue();

        int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
        txtbeneficiogenerado1.setText(num_generado+"");
    }catch (Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
    }
    //beneficio 2:
    try{
        int num1= (int)spibenef1.getValue();
        int num2= (int)spibenef2.getValue();

        int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
        txtbeneficiogenerado2.setText(num_generado+"");
    }catch (Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
    }
    //beneficio3:
    try{
        int num1= (int)spibenef1.getValue();
        int num2= (int)spibenef2.getValue();

        int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
        txtbeneficiogenerado3.setText(num_generado+"");
    }catch (Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
    }
    //beneficio4:
    try{
        int num1= (int)spibenef1.getValue();
        int num2= (int)spibenef2.getValue();

        int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
        txtbeneficiogenerado4.setText(num_generado+"");
    }catch (Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
    }

}                                                   

private void btnGenerarpesoActionPerformed(java.awt.event.ActionEvent evt) {                                               

    //GENERANDO NUMEROS ALEATORIOS PARA EL PESO:
    //peso1:
    try{
        int num1= (int)spipeso1.getValue();
        int num2= (int)spipeso2.getValue();

        int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
        txtpesogenerado01.setText(num_generado+"");
    }catch (Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
    }
    //peso 2:
    try{
        int num1= (int)spipeso1.getValue();
        int num2= (int)spipeso2.getValue();

        int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
        txtpesogenerado02.setText(num_generado+"");
    }catch (Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
    }
    //peso3:
    try{
        int num1= (int)spipeso1.getValue();
        int num2= (int)spipeso2.getValue();

        int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
        txtpesogenerado03.setText(num_generado+"");
    }catch (Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
    }
    //peso4:
    try{
        int num1= (int)spipeso1.getValue();
        int num2= (int)spipeso2.getValue();

        int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
        txtpesogenerado04.setText(num_generado+"");
    }catch (Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
    }

}                                              

private void txtbeneficiogenerado4jTextField10ActionPerformed(java.awt.event.ActionEvent evt) {                                                                  
    // TODO add your handling code here:
}                                                                 

private void txtpesogenerado04jTextField8ActionPerformed(java.awt.event.ActionEvent evt) {                                                             
    // TODO add your handling code here:
}                                                            

private void txtpesogenerado01ActionPerformed(java.awt.event.ActionEvent evt) {                                                  
    // TODO add your handling code here:

}                                                 

private void jTextField84jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {                                                        
    // TODO add your handling code here:
}                                                       

private void jTextField83jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                                        
    // TODO add your handling code here:
}                                                       

// HERE BELOW IS WHERE I HAVE PROBLEMS

    private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {                                            



        int p = (int)Integer.parseFloat(txtpesogenerado01.getText());
                int q = (int)Integer.parseFloat(txtpesogenerado02.getText());
                float solucion[] = new float [p];// tipo unidimensional (vector);
        Beneficio objetos[] = new Beneficio[p];
        llenar(objetos); // ingresamos los valores
        mostrar(objetos); //muestra los elementos ingresados
        directa(objetos); // ordena de acuerdo a nuestra funcion seleccion
        mostrar(objetos); // muestra los elementos ordenados
        objetivo(solucion , objetos); // resuelve el problema
        mostrar(solucion,objetos); // muestra la solucion

    }



    //funcion para llenar los vectores
    public static void llenar(Beneficio vector []  ){
    for(int i = 0 ; i < vector.length ;i++) {
        int p1 = Integer.parseFloat(txtpesogenerado1.getText()+(i+1));
        int p2 = Integer.parseFloat(txtpesogenerado2.getText()+(i+1));
        int p3 = Integer.parseFloat(txtpesogenerado3.getText()+(i+1));
        int p4 = Integer.parseFloat(txtpesogenerado4.getText()+(i+1));  
        int b1 = Integer.parseFloat(txtbeneficiogenerado1.getText()+(i+1));
        int b2= Integer.parseFloat(txtbeneficiogenerado1.getText()+(i+1));
        int b3 = Integer.parseFloat(txtbeneficiogenerado1.getText()+(i+1));
        int b4 = Integer.parseFloat(txtbeneficiogenerado1.getText()+(i+1));
        vector[i]= new Beneficio (b1,b2,b3,b4,p1,p2,p3,p4); // calcula el bxp

    }   }


    //funcion para ordenar segun el beneficio por unidad 
    public static void directa(Beneficio [] vector )
    {

    int i,k,j;
    double menor;
    Beneficio aux = new Beneficio();
    aux = vector[0];

    for(i=0 ; i<vector.length;i++ )
    {
        menor=vector[i].getBxp();
        k=i;

        for(j=i+1 ; j<vector.length;j++ )
        { 
            if(vector[j].getBxp()< menor) // ordena el valor por bxp
            {
            menor=vector[j].getBxp();
            aux= vector[j];
            k=j;

            }

        }
        aux= vector[k];
        vector[k]=vector[i];
        vector[i]=aux;

    }

    }

    public static void mostrar(Beneficio [] aux )
    { String beneficio="beneficio:  ",peso = "peso" , valor="valor por unidad:  " ;
        for(int i=0 ; i<aux.length;i++)
        {
            beneficio+= aux[i].getBeneficio() + "  ,  ";
            peso += aux[i].getPeso() + " , ";
            valor += (aux[i].getBeneficio() / aux[i].getPeso())  + " , ";

        }
    JOptionPane.showMessageDialog(null, peso + "\n" + beneficio + "\n" + valor ); 
    }

    public static void mostrar(float aux [] , Beneficio b [])
    { String solucion=" solucion:  " ;
      float suma = 0;
        for(int i=0 ; i<aux.length;i++)
        {
            solucion += aux[i]+ "-------";
            suma+= aux[i]*b[i].getBeneficio();
        }
    JOptionPane.showMessageDialog(null, solucion  + "\n total beneficio: "  + suma ); 
    }


//funcion para seleccionar los objetos:
        //MAX F.O:

public static void objetivo(float solucion[], Beneficio objetos[]) // envia un vector solucion ()
{
 int m = Integer.parseInt(JOptionPane.showInputDialog("ingrese el tamaño de la mochila"));
float pesoactual= 0;
 int i = solucion.length-1;// empieza a recorrerlo desde el final por haber ordenado de mayor a menor

   while(pesoactual < m  || i>= 0)
   { 
     JOptionPane.showMessageDialog(null, " peso actual: "+ pesoactual +  "   peso objeto " + i + "  :" + objetos[i].getPeso() + "\n  ");

      if( (pesoactual + objetos[i].getPeso()) < m ) //<--- el objeto que se tomará
      {
          solucion[i]= 1;
          pesoactual+= objetos[i].getPeso();
          JOptionPane.showMessageDialog(null, " peso actual: "+ pesoactual +  "   porcentaje tomado del objeto  " + i + "  :" +  solucion[i]*100 + "\n  ");
      }
      else

      {
         solucion[i]=(m-pesoactual)/objetos[i].getPeso();
         pesoactual += ((m-pesoactual)/objetos[i].getPeso())* objetos[i].getPeso();
         JOptionPane.showMessageDialog(null, " peso actual: "+ pesoactual +  "   porcentaje tomado del objeto  " + i + "  :" +  solucion[i]*100 + "\n  "); 
      //fraccionamos_/
          }

    i--;   
   }




}


    }
    
asked by Andreso 25.11.2017 в 13:24
source

1 answer

0

You have to convert the value of txtpesogenerado1.getText() to String with the toString() method.

int p1 = Integer.parseFloat(txtpesogenerado1.getText().toString()+(i+1));
    
answered by 25.11.2017 в 15:03