По какой-то причине, если один из трех возможных сценариев моего переключателя stmt запущен, он выполняется дважды. Три возможности: Gone, Unlocked, Locked. Если «Заблокировано» запущено, он запускает как «Заблокированные», так и «Разблокированные» пути.Почему мой while/switch делает один случай дважды?
Мой код ниже, и поведение приведено в прилагаемом скриншоте. Я не понимаю, как коммутатор оценивает значение? (Т.е. он «содержит», а не «равно» проверить?)
while (graveData.next()) {
switch(graveData.getString("Status")) {
case "Gone":
new FancyMessage("ID").color(GRAY)
.then("" + graveData.getInt("ID")).color(AQUA)
.then(" ").color(GRAY)
.then(graveData.getString("Status"))
.color(GREEN).then(", Owner ").color(GRAY)
.then(graveData.getString("PlayerName"))
.color(YELLOW).then(", Looter ").color(GRAY)
.then(graveData.getString("LooterName"))
.color(YELLOW).then(", ").color(GRAY)
.then("Loc").color(GRAY)
.tooltip(graveData.getString("Location"))
.send(commandSender);
break;
case "Locked":
new FancyMessage("ID").color(GRAY)
.then("" + graveData.getInt("ID")).color(AQUA)
.then(" ").color(GRAY)
.then(graveData.getString("Status"))
.color(YELLOW).then(", Owner ").color(GRAY)
.then(graveData.getString("PlayerName"))
.color(YELLOW).then(", ").color(GRAY)
.then("Loc").color(GRAY)
.tooltip(graveData.getString("Location"))
.send(commandSender);
case "Unlocked":
new FancyMessage("ID").color(GRAY)
.then("" + graveData.getInt("ID")).color(AQUA)
.then(" ").color(GRAY)
.then(graveData.getString("Status"))
.color(RED).then(", Owner ").color(GRAY)
.then(graveData.getString("PlayerName"))
.color(YELLOW).then(", ").color(GRAY)
.then("Loc").color(GRAY)
.tooltip(graveData.getString("Location"))
.send(commandSender);
break;
}
Существует не 'break;' for' "Locked" case. –
Несвязанные, но, пожалуйста, рассмотрите рефакторинг или три. –
Каково ваше ожидаемое поведение? –