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在没有初始化的情况下通过了while循环,那就太糟糕了,如果将其设置为0,可能会很难找到该bug(尤其是在这里,因为0是一个有效的作业索引)。如果它没有初始化,我想事情会很快崩溃,我会找到bug。现在,我可以将其初始化为-1,但很容易想象一个类似的场景,其中所有int都是有效的。对于这个例子来说这并不重要,但是为了将来编写更好的代码。。。
总之,我有两个问题:
为什么Eclipse会强迫我这么做?这似乎是一个相当严重的编译器错误
而(! inputValid){
不满足Java的可达性或其他测试。
因此,在这种情况下,Java需要一个错误。
我对python相当陌生,我想知道局部变量是如何工作的。让我们从一个简单方法的示例开始: 让我们假设local_dict像一种常量变量一样使用。这里有一个问题:它是在每次调用do_sth()时创建的,还是创建一次并保存在do_sth()内部的某个地方?
print语句会导致以下编译时错误, 局部变量f可能尚未初始化 如果Java中的原语已经有一个默认值(float=0.0f),为什么我需要定义一个呢? 所以,这是有效的 谢谢大家!
我没有发现这段代码中有任何错误,但是eclipse告诉我变量没有初始化。这只是一个警告,但编译后也不起作用。我根本找不到错误,这段代码是100%正确的。请注意,此代码的结构不容易更改,因为下面提供的代码经过简化,因此您没有那么多要阅读的内容;-)
考虑到下面的代码,为什么即使优惠券、偏移量和基已在if语句中初始化,编译器仍会在第5行抱怨?由于“percent”变量的默认值为0.0,因此if语句将运行并设置这些值。
我有以下方法: 当编译我的代码时,我得到这个编译错误:< code >变量' total '可能没有初始化 我的代码的哪一部分触发了错误?
下面的示例类无法编译: 此代码的编译错误消息是: 但是,对于包含以下方法的类,Java不会生成任何错误消息: 关于初始化及其要求,为什么Java对最终实例变量和最终局部变量的处理不同?谢谢