private int getJobIndex() {
int jobNum;
boolean inputValid = false;
while (!inputValid) {
jobNum = getIntegerInput("Please select a job to work on: ");
if (jobNum < 0 || jobNum >= game.getNumberOfJobs()) {
System.out.println("Invalid selection. Please choose a valid job.");
}
else {
inputValid = true;
}
}
return jobNum;
}
这是一个理论上的问题,所以请忍受我。在上面的代码中,我要获取用户输入,以循环验证它并返回。上面编写的代码不会在Eclipse中编译,因为"局部变量Jobnum可能没有初始化"。Eclipse的建议是将初始声明更改为int jobNum = 0;
。不过,这让我感到困扰,因为如果Jobnum在没有初始化的情况下超越了时循环,那将是不好的,并且设置为0可能会使该错误很难找到(尤其是在这里,因为0是有效的作业索引)。如果它是不专业的,我想事情会很快破裂,我会发现这个错误。现在,我可以将其初始化为-1,但是很容易想象所有INT都有效的类似情况。对于此示例来说,这并不重要,但是为了将来编写更好的代码...
因此,总而言之,我有两个问题:
- 为什么Eclipse将其迫使我?这似乎是一个相当沉重的编译器错误。
- 编码此编码的正确方法是什么,该方法不引入我可能会轻易误以为输入的默认值?
while (!inputValid) {
不满足Java的可及性测试,或者其他。
因此,在这种情况下,Java需要错误。