Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Java Threads

¿Desde que línea de esas te lanza la excepción?

noviembre 21, 2013 | Registered Commenterchoces

do{
if((plazas[plaza]==0)&&(plazas[plaza+1]==0)&&(plazas[plaza+2]==0)){
return plaza;
}else{
plaza++;
}
}while(plaza<n_plazas-1);

Si en ese bucle haces plaza++ esta claro que en la siguiente iteracion cuando haga plazas[plaza+2] se va a salir del tamano del array. Tienes que usar otra variable para hacer ese incremento.

Un saludo

noviembre 21, 2013 | Unregistered CommenterUnoPorAhi

O hacer directamente

if((plazas[0]==0)&&(plazas[1]==0)&&(plazas[2]==0)){

noviembre 21, 2013 | Unregistered CommenterUnoPorAhi

aaa!muchas gracias, pero como pongo otra variable? pues quiero que compruebe todas las plazas, que no empieza a comparar siempre por el 0...

noviembre 21, 2013 | Unregistered Commenterkk

Buenas,

Siento decirlo pero he revisado un poco el código y no veo por donde cogerlo. Por desgracia no se puede sustituir esa variable sin afectar a la lógica ya que todo está muy acoplado.
Lo más sencillo es que en ese if, lo primero de todo compruebes si tiene dicho tamaño:

if((plaza + 2 < plazas.length) && (plazas[plaza]==0)&&(plazas[plaza+1]==0)&&(plazas[plaza+2]==0)){

Como sabras las condiciones del if funcionan en cortocircuito, por lo que si no se cumple la primera no se evaluan las siguiente. Por tanto, si ve que el tamaño del vehículo sobrepasa la capacidad del array/parking te dira que está lleno.

Un saludo

noviembre 21, 2013 | Unregistered CommenterUnoPorAhi

Muchisimas gracias!

noviembre 22, 2013 | Unregistered Commenterkk

podrias pasarme tu trabajo porfa

junio 12, 2015 | Unregistered Commenterfrank