for 循环中的变量给出一条消息,指出“未使用局部变量 i 的值”

Variable in for loop is giving a message that "The value of the local variable i is not used"

提问人:Ozakriid 提问时间:2/18/2023 更新时间:2/18/2023 访问量:46

问:

我编写了一个for循环,应该确定是否有用户输入。如果有,它将 的 6 个元素设置为输入,即 vararg 。如果没有输入,则将所有元素设置为等于 -1。int[] valueArrint[] statValue

if (statValue.length == 6) {
    for (int i = 0; i < 6; i++) {
        valueArr[i] = statValue[i];
    }

} else {
    for (int i : valueArr) {
        i = -1;
    }
}

我正在使用 Visual Studio Code,它给了我一条消息:for (int i : valueArr)

“未使用局部变量 i 的值。”

那个特定的for循环语法对我来说仍然是新的,所以我可能很盲目,但它在另一个文件中工作:

for(int i : rollResults) {
    sum = sum + i;
}

我觉得我还应该提到给我带来麻烦的 for 循环是在一种方法中。我还很新,最近才开始使用私人方法。我注意到该方法在不在其他地方使用时会给出相同的消息,但我不明白为什么它会出现在这里。private void

我尝试关闭并重新打开 Visual Studio Code、删除和重新键入代码以及其他形式。在我短暂的经验中,我曾遇到过一些错误和消息,这些错误和消息不应该出现,并用我提到的内容修复它们,但这些都不起作用。

java 数组 for-loop 局部变量 private-methods

评论


答:

2赞 rzwitserloot 2/18/2023 #1
for (int i : valueArr) {
 .... CODE HERE ...
}

这将设置一个循环,该循环将运行一定次数。在此循环中,在每个循环开始时,都会创建一个名为 的全新变量,其中包含 中的值之一。一旦循环结束,这个变量就会被销毁。值得注意的是,不是直接的值 - 修改它没有任何作用 - 如果你稍后在块中使用,除了影响这个循环。它不会修改 的内容。CODE HEREivalueArrivalueArrivalueArr

因此,为什么你会收到警告:什么都不做 - 你改变了什么,然后循环结束,这意味着消失了,你的代码没有改变任何事情或做任何事情,这肯定不是你想要的。因此,警告。i = -1ii

目前还不完全清楚你想在这里做什么。如果打算将所有值设置为 -1,则需要:valueArr

for (int i = 0; i < valueArr.length; i++) valueArr[i] = -1;

或者,实际上,您可以更简单地做到这一点:

Arrays.fill(valueArr, -1);

valueArr[i] = -1将数组中第 -个值的值更改为 。 什么也不做。ivalueArr-1for (int i : valueArr) i = -1;

评论

0赞 Ozakriid 2/23/2023
非常感谢!我不知道它破坏了变量,但考虑到它是在循环中实例化的,现在这确实是有道理的。