【问题标题】:Unable to change the value of variable inside for-loop & if-else statement in Java [duplicate]无法更改Java中for循环和if-else语句中变量的值[重复]
【发布时间】:2021-11-22 19:18:42
【问题描述】:

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

    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

【问题讨论】:

  • 如果您的所有if-else if 都不满意怎么办? flag 应该保持什么值?所以你需要初始化flag 局部变量。将其初始化为某个默认值有什么问题?

标签: java for-loop if-statement


【解决方案1】:

您需要使用任何类型的值初始化您的 flag 对象,因为当您尝试打印它时它可能未初始化,从而导致您的错误。

如果 fileOneLines.length 返回 0 或您的 diffs 集合为空,或者如果您的 if-elses 不满足,则 flag 将不会被初始化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多