Avisos
Vaciar todo

[Resuelto] Problemas con representar graficamente dos matrices

4 Mensajes
2 Usuarios
0 Reactions
12.3 K Visitas
(@arnolvalencia)
Active Member
Registrado: hace 7 años
Respuestas: 11
Topic starter  

Buenas tardes.

He iniciado a trabajar con MyOpenLab, me he encontrado con un problema y no he podido dar con el error, espero que me puedan ayudar.

El codigo del problema es el siguiente:

Exception : "Out of Bounds!" in Element : "Setter2D" Name :"2D Escribir" Application abborded!
Error in xonProcess : java.lang.ArrayIndexOutOfBoundsException: 3, 2D Escribir

Aparece al intentar desarrollar el ejercicio numero 1.10 de la guia de estudio titulada "Manejo de datos en Matrices y Tablas" 

pueden encontrar el VM en el siguiente link de google drive:  https://drive.google.com/open?id=1Ej-mZ9WhnVxwwOHUpuu_U_aCyy7oj4d1

Quedo atento a cualquier cualquier sugerencia y de antemano les agradezco su atencion.


   
Citar
admin
(@admin)
Miembro Admin
Registrado: hace 8 años
Respuestas: 119
 

Hola,

Para entender la falla primero vamos a revisar los elementos que está usando (que propiedades tienen configuradas) y el objetivo del Ejercicio.

En el ejemplo se usa un generador de números llamado "Contador Gen1" el cual está configurado para generar un número con un cierto retardo e ir incrementando hasta el límite configurado. (Si revisa estos parámetros en la sección de Propiedades verá que tiene un generador de 0 a 100000.0 que incrementa cada 100 mS).

En el ejemplo se propone tener unos arreglos de dos dimensiones (2D) para almacenar datos, el Elemento "Setter2D" lo que hace es introducir datos en ese Arreglo 2D pero en la dirección de fila y columna que entren al elemento.

Si revisamos el arreglo 2D donde va a almacenar los números de 1 a 100000.0 que es el arreglo "2D Matrix (Double)2" vemos que está configurado como 3 filas y 3 columnas, lo cual según el objetivo del ejercicio que es graficar una función seno pueden ser muy pocos valores. 

Cuando inicia la ejecución y se presiona el botón "Inicio" el contador primero va a generar un valor "cero", y el elemento Setter2D va a guardar ese valor "cero" en el arreglo "2D Matrix (Double)2" en la posición Columna "cero" fila "cero", en la segunda ejecución que sería después de 100 mS, el contador va a generar un valor "Uno" y elemento Setter2D va a tratar de guardar ese valor "Uno" en el mismo arreglo "2D Matrix (Double)2" pero en la posición Columna "Cero" Fila "Uno" y así cada 100 mS hasta que al Generar un valor de Fila por ejemplo "Cuatro" que es mayor al tamaño que definió  en el arreglo 2D "Matrix (Double)2" que fue de 3 Filas y 3 Columnas va a ocurrir un error (Exception : "Out of Bounds!") en el elemento Setter2D porque está tratando de ingresar un valor "Cuatro" al arreglo 2D "Matrix (Double)2" en la Columna Cero y Fila Cuatro la cual estaría fuera de el tamaño que definió para ese arreglo  2D "Matrix (Double)2" en el cual la Fila 4 no existe.

 Le recomendaría cambiar el tiempo de retardo del generador de números para que incremente cada 1 segundo (1000 mS) lo cual le facilitaría ver el incremento lentamente y cambiar el tamaño de las Matrices 2D para que le quepan los datos que está generando.

Para cambiar el tamaño de esas matrices 2D debe hacerlo en la sección de propiedades en la opción "Values", ahí sale una ventana y le oprime "New" y ahí selecciona el número de filas y columnas necesarias. *Lo mismo para el otro arreglo que también está de 3Filas y 3 Columnas.

Adjunto capturas de imagen del procedimiento para cambiar el tamaño de la Matríz 2D.

 

Saludos,

Javier Velásquez


   
ResponderCitar
(@arnolvalencia)
Active Member
Registrado: hace 7 años
Respuestas: 11
Topic starter  

Excelente, mi problema era que no habia configurado correctamente la "2D Matriz (Double)1" como decias, muchas gracias!

Ahora me surge una pregunta, cada vez que termine el recorrido de por ejemplo en este caso las 360 casillas el programa se detendra y generara el mismo error, es posible generarle una parada automatica?


   
ResponderCitar
admin
(@admin)
Miembro Admin
Registrado: hace 8 años
Respuestas: 119
 

Hola,

Si señor, se puede detener automáticamente, lo más simple sería cambiar en el generador de números el máximo número a generar por 359 y nunca se desbordaría el arreglo.

Otra opción sería comparar el número que se va generando con los elementos comparador menor o igual y la salida se envía a un elemento "Quit Aplication" que permite detener el VM o salir totalmente.

 

Saludos,

Javier Velásquez


   
ResponderCitar
Compartir: