elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  duda en codigo con array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda en codigo con array  (Leído 2,494 veces)
__Horus__

Desconectado Desconectado

Mensajes: 2


Ver Perfil
duda en codigo con array
« 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;
   }
}





En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: duda en codigo con array
« Respuesta #1 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];


« Última modificación: 14 Marzo 2008, 15:21 pm por egyware » En línea

Casidiablo
Desarrollador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.919



Ver Perfil WWW
Re: duda en codigo con array
« Respuesta #2 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.
En línea

__Horus__

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: duda en codigo con array
« Respuesta #3 en: 16 Marzo 2008, 04:06 am »

ok gracias tienen razon deberia empezar desde subindice cero no desde el 1 enseguida lo corrijo  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con array
Java
~ Yoya ~ 0 1,485 Último mensaje 13 Marzo 2011, 21:18 pm
por ~ Yoya ~
(Duda) Pregunta readprocessmemory array
Programación C/C++
Cromatico 8 4,399 Último mensaje 15 Abril 2011, 18:49 pm
por Arkangel_0x7C5
Duda array en constructor
Java
KaRaLLo 4 16,086 Último mensaje 23 Enero 2012, 01:59 am
por leogtz
Quiero ver el código del método array.Clone() de C#
.NET (C#, VB.NET, ASP)
DanteInfernum 5 3,109 Último mensaje 27 Agosto 2013, 18:53 pm
por DanteInfernum
duda: Array multidimensionales
Programación C/C++
bash 7 2,172 Último mensaje 26 Abril 2015, 19:37 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines