Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] problema con array dentro y fuera de un listener

Estas en el tema de problema con array dentro y fuera de un listener en el foro de Java en Foros del Web. Buenas y mucho gusto, soy nuevo por aqui y me gustaria compartir y recibir informacion de todos ustedes. Tengo el siguiente problema. Declaro un array ...
  #1 (permalink)  
Antiguo 21/01/2014, 15:40
 
Fecha de Ingreso: enero-2014
Ubicación: petare
Mensajes: 5
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta problema con array dentro y fuera de un listener

Buenas y mucho gusto, soy nuevo por aqui y me gustaria compartir y recibir informacion de todos ustedes. Tengo el siguiente problema.

Declaro un array de tipo double (porcent) sin problemas pero al momento de utilizarlo dentro de un listener me dice "The final local variable porcent cannot be assigned, since it is defined in an enclosing type" .

final double[] porcent = null;
final Choice chRamo = new Choice();
chRamo.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
//double[] porcent;*****

switch (chRamo.getSelectedIndex()){
case 0:

porcent= new double[]{0.16, 0.13, 0.13};
chSubRamo.removeAll();
chSubRamo.addItem("Individual");
chSubRamo.addItem("Colectivo");
chSubRamo.addItem("Escolares");
case 1:
porcent= new double[]{0.08, 0.06};
chSubRamo.removeAll();
chSubRamo.addItem("Individual");
chSubRamo.addItem("Colectivo");
....}

Luego en un boton dependiendo de la seleccion que se realizo en el choice:

Button btnCalcular = new Button("Calcular");
btnCalcular.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

double pcobr = Double.parseDouble(tfComision.getText()) / Double.parseDouble(tfPrima.getText());
double prisk = pcobr - porcent[chSubRamo.getSelectedIndex()];


double porimp = porcent[chSubRamo.getSelectedIndex()] / pcobr * 100;
double porrisk =(prisk / pcobr) * 100; //porcentaje risk


tfPorRisk.setText(String.format( "%.2f",porrisk));
tfPorImp.setText(String.format( "%.2f",porimp));

}
});

El problema me lo da cuando le indico que me le asigne un valor al array porcent, dicho error se soliciona si declaro el array dentro del listener del choice pero en cambio me da error cuando utilizo la variable porcent en el boton calcular "porcent cannot be resolved to a variable" y no se que hacer porque o me falla por un lado o por el otro. de ante mano agradezco sus colaboraciones llevo 3 dias analizando mil y un maneras pero nada.

Última edición por Roger357; 22/01/2014 a las 06:32
  #2 (permalink)  
Antiguo 22/01/2014, 06:46
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: problema con array dentro y fuera de un listener

Hola, quizás debas leer un poco sobre la palabra reservada "final", te recomiendo que des una vueltita por aquí:

http://en.wikipedia.org/wiki/Final_(Java)
http://toolboxnet.blogspot.com/2010/...l#.Ut--RtLIHGg

Básicamente las variables final no pueden ser modificadas, por lo que debes inicializarla en el mismo lugar donde la declaras...
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #3 (permalink)  
Antiguo 22/01/2014, 13:11
 
Fecha de Ingreso: enero-2014
Ubicación: petare
Mensajes: 5
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: problema con array dentro y fuera de un listener

gracias por tomarte el tiempo de leer me post pablor21, pero he intentado declarar esa variable de diferentes maneras y no he logrado inicializarla o asignarle valores dentro del listener y luego utilizarla nuevamente fuera del mismo. y si la leclaro normalmente double[] porcent; en el motodo del listener se le pueden asignar valores sin problemas pero cundo la voy a utilizar nuevamente fuera del listener me dice que la coloque como final. Estoy bastante confundido.
  #4 (permalink)  
Antiguo 22/01/2014, 14:33
 
Fecha de Ingreso: enero-2014
Ubicación: petare
Mensajes: 5
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: problema con array dentro y fuera de un listener

Bueno Muchisimas gracias a los que se tomaron la molestia de leerme y al amigo pablor21 por la intencion de ayudarme, consegui solucionar el problema inicializando el array en donde se van inicializando los demas componentes del formulario que va creando aqui:

public class Conversor {

private JFrame frame;
private JTextField tfPrima;
private JTextField tfComision;
private JTextField tfPorRisk;
private JTextField tfMontRisk;
private JTextField tfPorImp;
private JTextField tfMontImp;
double[] porcent;<<<<<--------aqui el origen de mis males por 3 dias XD!

Saludos!
  #5 (permalink)  
Antiguo 23/01/2014, 07:59
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: problema con array dentro y fuera de un listener

Lo que pasa es que no declaraste la variable como final, ahí sí te va a dejar modificarla en cualquier punto del programa donde dicha variable sea visible...

Si lo que necesitas es que la variable sea final, entonces tienes que definirla donde la declaras... algo así:

final double[] array =new double[4];

Igual, me alegro que hayas solucionado tu problema.

Saludos,
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy

Etiquetas: fuera, listener, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:47.