Foro de elhacker.net

Programación => Java => Mensaje iniciado por: bettu en 30 Septiembre 2015, 23:18 pm



Título: Al compilar un codigo en Java me da error y no consigo averiguar qué pasa
Publicado por: bettu en 30 Septiembre 2015, 23:18 pm
Hola,

Justo ahora estoy aprendiendo ha programar un poquillo de Java y me han pasado un código en que debo encontrar errores sintácticos y semanticos como parte del aprendizaje. De momento estoy con los sintácticos para que me deje compilar el programa, lo que pasa que estoy encallado en un error y no veo muy bien qué falla (adjunto parte de código):

Código
  1. public void sort() {
  2. boolean end = false; //SINTACTIC ERROR: we must write boolean and not bool
  3. int upperLimit = this.quantity - 1;
  4. while ((upperLimit > 0) && (!end)) {
  5. boolean swapped = false;
  6. for (int j = 0; j < upperLimit; j++) {
  7. if (!isSorted(j, j+1))
  8. swap(j, j + 1);
  9. swapped = true;
  10. }
  11. }
  12. if (!swapped) {     //aquí es donde me falla
  13. end = true;
  14. }
  15. upperLimit++;
  16. };

Es parte de un código que lo que hace es ordenar los numeros de menor a mayor. El programa es más extenso pero creo que los errores los he podido corregir pero por más que me peleo, de aquí ya no paso.

¿Alguien podría explicarme cómo debería ser ese condicional? He probado poniendo !=swapped pero aun así nada...

Gracias!


Título: Re: Al compilar un codigo en Java me da error y no consigo averiguar qué pasa
Publicado por: MGGM en 1 Octubre 2015, 00:45 am
El if no tiene llave de apertura pero sí de cierre. Por lo tanto, la llave de cierre del if cierra el for y la llave de cierre del for cierra el while, por ende, swapped no existe fuera del while.


Título: Re: Al compilar un codigo en Java me da error y no consigo averiguar qué pasa
Publicado por: bettu en 3 Octubre 2015, 13:01 pm
El if no tiene llave de apertura pero sí de cierre. Por lo tanto, la llave de cierre del if cierra el for y la llave de cierre del for cierra el while, por ende, swapped no existe fuera del while.

Co*o, es verdad, que tonto soy xD No me di cuenta del claudator del if.

Muchas gracias, con eso ya me funcionó, mil gracias :D


Saludos,