otra vez yo por aqui con un adudita que me esta volviendo loco, la cuestion es algo que surgio a partir del post anterior http://www.forosdelweb.com/f30/secur...eption-746599/ la cuestion es que ahora me manda una excepcion en el manejo de estos componentes StringItem, les paso el codigo completo por si me pueden ayudar.
Código:
cuando lo ejecuto me manda la siguiente excepcion/* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.io.InputStream; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * @author Lair */ public class diccionario extends MIDlet implements ItemStateListener, CommandListener{ Display pantalla; Form Form1,Form2; Alert error,test; TextField input; Command salir,buscar,regresar; List listRoots, listContents; StringItem respuesta[]; Class cc = this.getClass(); InputStream ips= cc.getResourceAsStream("/definiciones.txt"); int i=0,cont=0; byte b[]=new byte[1]; String CHAR="",Cadena=""; public diccionario(){ pantalla=Display.getDisplay(this); Form1= new Form("Diccionario"); Form2=new Form("Resultados"); error=new Alert("Alerta", "", null, AlertType.WARNING); error.setTimeout(Alert.FOREVER); test=new Alert("Prueba", "Alerta de debugeo", null, AlertType.CONFIRMATION); test.setTimeout(Alert.FOREVER); input=new TextField("Buscar Palabra", "", 70, TextField.ANY); salir =new Command("Salir", Command.EXIT, 1); buscar=new Command("Buscar", Command.ITEM, 1); regresar=new Command("Regresar", Command.BACK, 1); Form1.append(input); Form1.addCommand(buscar); Form1.addCommand(salir); Form1.setItemStateListener(this); Form1.setCommandListener(this); Form2.addCommand(regresar); Form2.setCommandListener(this); } public void startApp() { pantalla.setCurrent(Form1); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable d){ if(c==buscar){ if(!input.getString().equals("")){ Form2.setTitle("Resultados: "+input.getString()); try { CHAR=Cadena=""; cont=0; while(ips.read(b)!=-1){ CHAR=new String(b); if(CHAR.equals("\n")) cont++; } respuesta=new StringItem[cont]; cont=0; ips.reset(); while(ips.read(b)!=-1){ CHAR=new String(b); Cadena+=CHAR; if(CHAR.equals("\n")){ //esta es la linea que manda la excepcion respuesta[cont]=new StringItem(Cadena, ""); Cadena=""; Form2.append(respuesta[cont]); cont++; } CHAR=""; } pantalla.setCurrent(Form2); } catch (Exception ex) { error.setString("Error:\n"+ex); pantalla.setCurrent(error); } }else{ error.setString("Debe introducir algun texto."); pantalla.setCurrent(error); } } if(c==regresar){ Form2.deleteAll(); pantalla.setCurrent(Form1); } if(c==salir){ destroyApp(false); notifyDestroyed(); } } public void itemStateChanged(Item i){ if(i==input){ System.out.println("Evento del input"); } } }
Cita:
cabe mencionar que la excepcion se produce la segunda vez que entro a ese bloque de codigo, que es la linea que dice if(c==buscar){, tambien se que es esa excepcion, lo que no se es por que la manda solo despues de la primera vez.java.lang.ArrayIndexOutOfBoundsException: 0
creo que el principal problema es con los conocimientos basicos de java, si es asi, Pido a los moderadores muevan este post al foro correcto (java), y ver si es posible que alla me ayude de una mejor manera.
gracias por su tiempo y ayuda.