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);
}
}
上面代码中的
case "exit" -> return;
发生了错误。在 switch 表达式中,如果代码写成单行形式,你可以省略花括号,但是编译器会要求添加花括号。
这是我遇到的编译错误:
error: unexpected statement in case, expected is an expression,
a block or a throw statement case "exit" -> return;
为什么会出现这个问题?
如果我加上括号,它就可以正常工作。
但是当括号被删除时,我想知道为什么会出现错误?
switch expression
,只是一个switch statement
- 根据JLS 14.11(和编译器)的规定;2)错误信息应该提供相关信息,例如“作为语句的无效表达式”(试着在return;
周围使用{ }
)。return;
不是一个表达式,也不是一个代码块,也不是一个抛出语句——正如之前建议的那样,在它周围使用{}
,将其转换为代码块。 - user16320675