subir servlet servidor guardar archivos archivo java if-statement scope curly-braces

java - servlet - Error: ''else'' sin ''si''



subir archivos a servidor jsp (3)

El problema es que el primero si if (temp > 95 || temp < 20); es lo mismo usando una sangría normal como

if (temp > 95 || temp < 20) { }

Es decir, si la temperatura no está entre 20 y 95, entonces ejecuta un bloque vacío. No hay más para esto.

La siguiente línea else no tiene si corresponde y produce su error

La mejor forma de lidiar con esto es utilizar llaves para mostrar lo que se ejecuta después del if. Esto no significa que el compilador capte los errores, pero primero es más probable que vea algún problema al ver la sangría y también los errores pueden parecer más legibles. Sin embargo, puede usar herramientas como eclipse, checkstyle o FindBugs que le indicarán si no ha usado {} o si ha utilizado un bloque vacío.

Una mejor manera podría ser, ordenar la lógica mientras estás volviendo a probar las cosas

if (temp > 95 || temp < 20) { System.out.println ("Visit our shops"); } else if (temp >= 80) { System.out.println ("Swimming"); } else if (temp >=60) { System.out.println ("Tennis"); } else if (temp >= 40) { System.out.println ("Golf"); } else if (temp >= 20) { System.out.println ("Skiing"); }

Obtener un else sin declaración if:

import java.util.Scanner; public class LazyDaysCamp { public static void main (String[] args) { int temp; Scanner scan = new Scanner(System.in); System.out.println ("What''s the current temperature?"); temp = scan.nextInt(); if (temp > 95 || temp < 20); System.out.println ("Visit our shops"); else if (temp <= 95) if (temp >= 80) System.out.println ("Swimming"); else if (temp >=60) if (temp <= 80) System.out.println ("Tennis"); else if (temp >= 40) if (temp < 60) System.out.println ("Golf"); else if (temp < 40) if (temp >= 20) System.out.println ("Skiing"); } }

Necesito usar una cascada si es por eso que se ve así. Además, ¿podría decirme si hice la conexión en cascada si es correcto? No he podido encontrar un buen ejemplo de conexión en cascada, por lo que hice lo mejor que pude para saber qué significa en cascada.

LazyDaysCamp.java:14: error: ''else'' without ''if'' else if (temp <= 95) ^ 1 error

Ese es el error que estoy recibiendo


Elimine el punto y coma al final de esta línea:

if (temp > 95 || temp < 20);

Y por favor, ¡use llaves! Java no es como Python, donde la sangría del código crea un nuevo alcance de bloque. Es mejor ir a lo seguro y usar siempre corchetes, al menos hasta que tenga más experiencia con el idioma y comprenda exactamente cuándo puede omitirlos.


Voy a reformatear esto para ti. Si usa corchetes, nunca tendrá este problema.

public class LazyDaysCamp { public static void main (String[] args) { int temp; Scanner scan = new Scanner(System.in); System.out.println ("What''s the current temperature?"); temp = scan.nextInt(); if (temp > 95 || temp < 20) //<-- I removed the semicolon that caused the error { System.out.println ("Visit our shops"); } else if (temp <= 95) { if (temp >= 80) { System.out.println ("Swimming"); } else if (temp >=60) { if (temp <= 80) { System.out.println ("Tennis"); } else if (temp >= 40) { if (temp < 60) { System.out.println ("Golf"); } else if (temp < 40) { if (temp >= 20) { System.out.println ("Skiing"); } } } } } } }