为什么我的变量没有在 Java 中解析?

Why isn't my variable being resolved in Java?

我在 Eclipse 中遇到错误 Java。我的代码是:

if (args[0].equalsIgnoreCase("begin")) {
    long startTime;
    startTime = (System.currentTimeMillis() / 1000);
} else if (args[1].equalsIgnoreCase("stop")) {
    long endTime;
    endTime = (System.currentTimeMillis() / 1000);
} else if (args[1].equalsIgnoreCase("timer")) {
    long currentTime;
    long currentTimeForm;
    currentTime = (System.currentTimeMillis() / 1000);
    currentTimeForm = currentTime - startTime;
}

保存时出现错误startTime cannot be resolved to a variable。有没有可能是因为分开成单独的if语句,所以没有获取到变量?我正在编写 Bukkit Minecraft 插件。

如何解决这个错误?

您必须像这样实例化变量:

        if (args[0].equalsIgnoreCase("begin")) {
            long startTime=0;
            startTime = (System.currentTimeMillis() / 1000);
        } else if (args[1].equalsIgnoreCase("stop")) {
            long endTime=0;
            endTime = (System.currentTimeMillis() / 1000);
            
        } else if (args[1].equalsIgnoreCase("timer")) {
            long currentTime=0;
            long currentTimeForm=0;
            currentTime = (System.currentTimeMillis() / 1000);
            currentTimeForm = currentTime - startTime;
        }

但是,由于您在每种情况下都使用 startTime,因此您可以在 if 语句之外对其进行实例化。在某些情况下您也从未定义 endTime,因此这里是完全修改后的代码。

        long currentTime=0;
        long endTime=0;
        if (args[0].equalsIgnoreCase("begin")) {
            startTime = (System.currentTimeMillis() / 1000);
        } else if (args[1].equalsIgnoreCase("stop")) {
            endTime = (System.currentTimeMillis() / 1000);
            
        } else if (args[1].equalsIgnoreCase("timer")) {
            
            currentTime = (System.currentTimeMillis() / 1000);
            currentTimeForm = currentTime - startTime;
        }

在 if 级联之外声明变量,或者作为 class 的成员;您的问题上下文太少,无法更准确

            long startTime;
            long endTime;
            long currentTime;
            long currentTimeForm;

            if (args[0].equalsIgnoreCase("begin")) {
                startTime = (System.currentTimeMillis() / 1000);
            } else if (args[1].equalsIgnoreCase("stop")) {
                endTime = (System.currentTimeMillis() / 1000);
            } else if (args[1].equalsIgnoreCase("timer")) {
                currentTime = (System.currentTimeMillis() / 1000);
                currentTimeForm = currentTime - startTime;
            }