Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

116
Views
¿Por qué el retorno no se puede expresar en una línea cuando se usa una expresión de cambio?
while (true) { console.mainMenu(); String inputCommand = console.input(); switch(inputCommand) { case "exit" -> return; case "create" -> { Voucher voucher = createVoucher(); voucherRepository.save(voucher); } case "list" -> voucherRepository.findByIdAll(); default -> console.output(Error.INVALID_COMMAND); } }

Se produce un error en el case "exit" -> return; en el código anterior.

En una expresión de cambio, si el código se expresa como una sola línea, puede omitir los corchetes, pero continúa solicitando la adición de corchetes.

Este es el error de compilación que estoy recibiendo:

 error: unexpected statement in case, expected is an expression, a block or a throw statement case "exit" -> return;

¿Por qué está ocurriendo el problema?

Si agrego un soporte, funciona bien.

Pero me pregunto por qué ocurre el error cuando se eliminan los corchetes.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

No puede usar una declaración como regla (la parte después de la flecha -> ) en una expresión de cambio . Debe ser una expresión o un bloque (que puede contener una declaración o varias declaraciones)

Estas son reglas válidas según la especificación:

Cambiar regla:

  • SwitchLabel -> Expresión ;

  • Cambiar etiqueta -> Bloquear

  • Cambiar etiqueta -> Tirar declaración

Ejemplo de reglas válidas:

 int a = 9; switch(a) { case 1 -> System.out.println(a); // Expression case 2 -> {return;} // Block default -> throw new IllegalArgumentException(); // ThrowStatement }

Estas son las definiciones de expresión, declaración y bloque del tutorial de Oracle .

Expresión

Una expresión es una construcción formada por variables , operadores e invocaciones de métodos, que se construyen de acuerdo con la sintaxis del lenguaje, que se evalúa como un solo valor.

Declaración

Las declaraciones son aproximadamente equivalentes a oraciones en lenguajes naturales. Una declaración forma una unidad completa de ejecución . Los siguientes tipos de expresiones se pueden convertir en una declaración terminando la expresión con un punto y coma (;).

Cuadra

Un bloque es un grupo de cero o más declaraciones entre llaves balanceadas

return; no es una invocación de variable o método, es una declaración . Por lo tanto, debe encerrarse entre bases rizadas para formar un bloque de código.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!