【发布时间】:2021-03-28 08:08:44
【问题描述】:
我想生成一个唯一的术语,它是一个字母后跟两个数字,然后我想检查它是否不在数据库中。我尝试使用 do,然后使用一段时间,但我无法让它工作。我收到java: illegal start of expression 错误。你能看到我做错了什么吗?或者,有没有更好的方法来做到这一点?
这是我的代码:
public String setNumber(ReportType type) {
Random rand = new Random();
String number = String.format("%02d", rand.nextInt(100));
String prefix = "";
do {
switch (type) {
case CHILD:
prefix = "A";
break;
case ELDER:
prefix = "B";
break;
case BOOMER:
prefix = "C";
break;
}
String fullNumber = prefix + number;
while (dataBase.findInDataBase(fullNumber)) throws FileNotFoundException);
}
return fullNumber;
}
【问题讨论】:
-
我认为除了
Integer和String之外,您不能将objects与switch一起使用 -
另外,您的
do未与您的while配对。而while (dataBase.findInDataBase(fullNumber)) throws FileNotFoundException)没有意义。并且括号不匹配。 -
最多有。您可以选择 100 个潜在数字。列出所有这些数字(如果是 CHILD,则为 A00 到 A99),从数据库中获取所有数字并将它们从列表中删除,然后随机选择列表中剩余的数字之一。我认为这样会更快,因为您只需要询问数据库一次。
-
一样吗? stackoverflow.com/q/66804027/15244370 至少代码相似,缩进/结构错误相同 -
'{}'很重要 -
@neha 你忘了
enum和所有整数类型:"选择器表达式的类型必须是 char, byte, short, int, Character, Byte, Short, Integer, String,或枚举类型”
标签: java switch-statement do-while