java - if-else 中的局部变量初始化问题(Java)

标签 java if-statement initialization

这是我的代码。

public class Test {
    public void main (String[] args) {

        int a;
        String b = "11343468/32145";

        String c[] = b.split("");

        for(int i=0; i<c.length; i++) {
            if(c[i].equals("/")) {
                a = i;
            } else {a = 0;}
        }
        System.out.println(a);
    }

我正在尝试在 String[] c 中查找 / 的索引。

但是打印a时,eclipse说局部变量a可能还没有初始化。

我知道如果我将 System.out.println(a); 放入 if-else {} 中,我可以打印 a,但是我还有更多工作要做,因此我必须在 if-else 之外使用打印代码。

我使用了else代码,但仍然有错误。有什么问题吗?

最佳答案

就像评论中已经提到的那样,编译器的分析还不够深入,无法保证 for 循环运行,因此该变量不是 "definitely assigned" as required by the language .

要查找字符串中字符的索引,不需要 for 循环或 if 语句。您可以只使用 indexOf 方法:

    String b = "11343468/32145";
    int a = b.indexOf('/');

关于java - if-else 中的局部变量初始化问题(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60975802/

相关文章:

c++ - C++ CRTP初始化

c++ - 初始化 vector <Temp> myVector(10);

java - 嵌套列表迭代器。程序不会终止

java - 找不到要构建的任何修订。验证此作业的存储库和分支配置。完成 : FAILURE

Java:将电话键盘上的字母转换为数字

javascript - 寻找一种方法来简化这个 if/else 语句。 javascript

javascript - 条件 if else 在哈巴狗中

java - 无法理解程序工作流程

java - 加载页面的tomcat问题

java - Spring Autowiring 在特定配置下不起作用