Título: duda en codigo con array Publicado por: __Horus__ en 14 Marzo 2008, 05:43 am Hola!
Nos pidieron en la escuela un programa que pasa un numero que uno le ingrese por el teclado al programa y lo pase a numero romano menor que 3999 pero con arreglos y con to.charArray y partir de ellos para pasarlos de unidades, decenas, centenas y milesimas dependiendo su pocision el codigo en si lo tengo compilado en eclipse y no me marca errores pero al ejecutarlo me muestra la exception 345<---- este le ingrese java.lang.ArrayIndexOutOfBoundsException: 3 at Romano.main(Romano.java:198) Exception in thread "main" Segun se la exception ArrayIndexOutOfBoundsException aparece cuando los subindices del arreglo estan fuera de los limites establecidos por la matriz pero segun yo lo ando pasando el String a mi arreglo romano de char y partiendolo en pocision a int sin embargo me genera esa exception Espero me puedan ayudar :D Aqui esta el codigo: Esta algo larguito import java.io.DataInputStream; import java.io.IOException; public class Romano { public static void main(String[] args) { // TODO Auto-generated method stub String romanos=leeDato(); char[] romano=romanos.toCharArray(); if(romano.length==4){ int r=romano[0]; switch(r){ case 1: System.out.print("M"); break; case 2: System.out.print("MM"); break; case 3: System.out.print("MMM"); break; } int e=romano[1]; switch(e){ case 1: System.out.print("C"); break; case 2: System.out.print("CC"); break; case 3: System.out.print("CCC"); break; case 4: System.out.print("CD"); break; case 5: System.out.print("D"); break; case 6: System.out.print("DC"); break; case 7: System.out.print("DCC" ); break; case 8: System.out.print("DCCC"); break; case 9: System.out.print("DM"); break; } int w=romano[2]; switch(w){ case 1: System.out.print("X"); break; case 2: System.out.print("XX"); break; case 3: System.out.print("XXX"); break; case 4: System.out.print("XL"); break; case 5: System.out.print("L"); break; case 6: System.out.print("LX"); break; case 7: System.out.print("LXX" ); break; case 8: System.out.print("LXXX"); break; case 9: System.out.print("XC"); break; } int q=romano[3]; switch(q){ case 1: System.out.print("I"); break; case 2: System.out.print("II"); break; case 3: System.out.print("III"); break; case 4: System.out.print("IV"); break; case 5: System.out.print("V"); break; case 6: System.out.print("VI"); break; case 7: System.out.print("VII" ); break; case 8: System.out.print("VIII"); break; case 9: System.out.print("IX"); break; } } if(romano.length==3){ int e=romano[1]; switch(e){ case 1: System.out.print("C"); break; case 2: System.out.print("CC"); break; case 3: System.out.print("CCC"); break; case 4: System.out.print("CD"); break; case 5: System.out.print("D"); break; case 6: System.out.print("DC"); break; case 7: System.out.print("DCC" ); break; case 8: System.out.print("DCCC"); break; case 9: System.out.print("DM"); break; } int w=romano[2]; switch(w){ case 1: System.out.print("X"); break; case 2: System.out.print("XX"); break; case 3: System.out.print("XXX"); break; case 4: System.out.print("XL"); break; case 5: System.out.print("L"); break; case 6: System.out.print("LX"); break; case 7: System.out.print("LXX" ); break; case 8: System.out.print("LXXX"); break; case 9: System.out.print("XC"); break; } int q=romano[3]; switch(q){ case 1: System.out.print("I"); break; case 2: System.out.print("II"); break; case 3: System.out.print("III"); break; case 4: System.out.print("IV"); break; case 5: System.out.print("V"); break; case 6: System.out.print("VI"); break; case 7: System.out.print("VII" ); break; case 8: System.out.print("VIII"); break; case 9: System.out.print("IX"); break; } } if(romano.length==2){ int w=romano[2]; switch(w){ case 1: System.out.print("X"); break; case 2: System.out.print("XX"); break; case 3: System.out.print("XXX"); break; case 4: System.out.print("XL"); break; case 5: System.out.print("L"); break; case 6: System.out.print("LX"); break; case 7: System.out.print("LXX" ); break; case 8: System.out.print("LXXX"); break; case 9: System.out.print("XC"); break; } int q=romano[3]; switch(q){ case 1: System.out.print("I"); break; case 2: System.out.print("II"); break; case 3: System.out.print("III"); break; case 4: System.out.print("IV"); break; case 5: System.out.print("V"); break; case 6: System.out.print("VI"); break; case 7: System.out.print("VII" ); break; case 8: System.out.print("VIII"); break; case 9: System.out.print("IX"); break; } } if(romano.length==1){ int q=romano[3]; switch(q){ case 1: System.out.print("I"); break; case 2: System.out.print("II"); break; case 3: System.out.print("III"); break; case 4: System.out.print("IV"); break; case 5: System.out.print("V"); break; case 6: System.out.print("VI"); break; case 7: System.out.print("VII" ); break; case 8: System.out.print("VIII"); break; case 9: System.out.print("IX"); break; } } } public static String leeDato() { String dato = ""; try { DataInputStream intro = new DataInputStream(System.in); dato = intro.readLine(); } catch (IOException e) { System.out.println("leeDato-- Error de Entrada/Salida : " + e); } return dato; } } Título: Re: duda en codigo con array Publicado por: egyware en 14 Marzo 2008, 15:19 pm Primero creo que deberias colocarlo en las etiquetas code para que se entienda
y donde compruebas que el numero ingresado es de largo 3 empiezar a obtener desde el 1 cosa no error fatal pero si logico acuerdate que en una lista los indices empiezan desde el cero asi 0 1 2 y esto tiene largo 3 solo cuenta cuantos numero hay no mas Eso suerte xauu Creo que puedes usar algun bucle tienes mucho codigo repetidas que podiran reservirte PS: Ademas donde compruebas que es de largo 2 y 1 tambien te equivocas al asignar tus numeros pones int e=romano[1]; en ves de int e=romano[0]; Título: Re: duda en codigo con array Publicado por: Casidiablo en 14 Marzo 2008, 15:30 pm Es que primero dices:
if(romano.length==3) Y luego: int e=romano[1]; //no se que int e=romano[2]; //no se que int e=romano[3]; //no se que Pero debería ser int e=romano[0]; //no se que int e=romano[1]; //no se que int e=romano[2]; //no se que Un saludo! Citar Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. Título: Re: duda en codigo con array Publicado por: __Horus__ en 16 Marzo 2008, 04:06 am ok gracias tienen razon deberia empezar desde subindice cero no desde el 1 enseguida lo corrijo :D
|