当前位置: 首页 > 知识库问答 >
问题:

无法更改循环内部变量的值

鞠征
2023-03-14

我正在研究一个涉及for循环和if-else语句的java函数。我需要根据多次迭代中的条件更改标志变量的值。我声明了一个名为flag的变量,并希望根据每次迭代中的条件进行更改。我需要在每次迭代结束时打印flag变量的值。但是当我打印变量时,它显示了一个错误,变量没有初始化。如果我给它一个初始值,它会一直打印初始值,而不是在If-else语句中处理的值。我不能根据自己的要求初始化for循环中的flag变量。下面是我的代码:

    int flag;

    for(int i=0; i< fileOneLines.length; i++){
        diffs = diffMatchPatch.diffMain(fileOneLines[i],fileTwoLines[i]);
        diffMatchPatch.diffCleanupSemantic(diffs);
        for (DiffMatchPatch.Diff aDiff : diffs) {
            if(aDiff.operation.equals(DiffMatchPatch.Operation.INSERT)){
                flag = 1;
            }
            else if(aDiff.operation.equals(DiffMatchPatch.Operation.DELETE)){
                flag = 2;
            }
            else if(aDiff.operation.equals(DiffMatchPatch.Operation.EQUAL)) {
                flag = 0;
            }
        }
        System.out.println(flag);
    }

错误如下所示:

java: variable flag might not have been initialized

共有1个答案

鲜于谦
2023-03-14

您需要用任何类型的值初始化您的标志对象,因为当您试图打印它时,它可能没有初始化,从而导致您的错误。

如果fileOneLines。length返回0,或者您的diff集合为空,或者如果您的如果else不满足,那么标志将不会初始化。

 类似资料:
  • 问题内容: 我相信在AS3中,您应该在循环外初始化所有变量,以提高性能。JavaScript也是如此吗?哪个更好/更快/最佳实践? 要么 问题答案: 有 绝对没有区别 意义还是性能,在JavaScript或ActionScript。 是解析器的指令,而 不是 运行时执行的命令。如果在函数体(*)中的任何位置一次或多次声明了特定的标识符,则该标识符在块中的所有使用将引用局部变量。声明是在循环内部,循

  • 我正在使用Android Studio创建一个应用程序,并使用Firebase模拟后端数据库。目前,我正在尝试使应用程序能够接收并显示我通过Firebase输入的数据。当我使用Firebase data snapshot方法捕获数据时,由于快照发生在内部类中,我无法保存和使用数据。 例如,在Firebase中,我已将“Fri”的值指定给“2步”。如果您查看下面的代码,第一条print语句(内部类内

  • 我正在尝试使用TeamTreehouse学习订阅 目标:我正在尝试收集外部for循环中用户的输入。每个外循环迭代计算,内循环将迭代12次;每个月的降雨量。然后,外部回路将启动;显示整个时间段(1年或7年等)的月数、总降雨量和月平均降雨量。 我阅读了关于通过引用或通过值传递值的文章,发现python有可变和不可变的数据类型(int是一种不可变的数据类型),所以我不能简单地在for循环之间传递数据。那

  • 问题内容: 如何在Java的do-while循环内部访问变量? 下面的代码写出一个值,直到输入的值不在0到10之间为止。 这是我的代码: 只要输入在0到10之间,循环就会继续要求输入。一旦输入其他数字,循环就会终止并显示所有输入数字的总数。 问题答案: 尝试一下(在循环外将变量声明为a):

  • 问题内容: 我一生无法理解为什么我无法在while循环之外阅读postPrioity。我尝试过“ export postPrioity =“ 500””仍然无法正常工作。 有任何想法吗? -或在计划文字中- 输出:(我在files.txt中只有3个文件名) 问题答案: 管道操作员创建一个子外壳,请参阅BashPitfalls和BashFAQ。解决方案:不要使用,反正毫无用处。

  • 问题内容: 我有一个整数数组。 我想为每个X创建一个沿Y迭代的线程。我不知道如何将适当的X值传递给每个线程。 本质上我希望能够做到 任何帮助,将不胜感激 问题答案: 只值可以的方法和本地匿名内部类内被捕获。您需要按以下方式更改代码: