对于带有数组的Java循环

时间:2013-12-13 11:19:34

标签: java arrays loops if-statement for-loop

为什么这段代码会给我一个错误?我正在尝试返回stAr中与字符串s匹配的第一个字符串的索引。

    private String strArr[];

public int indexOf(String s) {
        for(int i=0;i<strArr.length ;++i) {
            if (strArr[i].equals(s)){
             return i;
            }
        }

}

5 个答案:

答案 0 :(得分:4)

  1. 您没有初始化数组(因此当您尝试获取它的长度时会得到NullPointerException)
  2. 如果找不到字符串,则不会从方法返回

    public class StringArrayIndex {
    
    private String strArr[] = new String[]{"bar","foo", "cas"};
    
    public int indexOf(String s) {  
        for(int i=0;i<strArr.length ;++i) {
            if (strArr[i].equals(s)){
                return i;
            }
        }
        return -1;
    }
    
    public static void main(String[] args){
      System.out.println(new StringArrayIndex().indexOf("foo"));
    }
    }
    
  3. 提交Stack Overflow时,您应该尝试提供更多信息(完整的代码示例,错误消息等),以便人们可以更轻松地为您提供帮助。

答案 1 :(得分:0)

您还需要返回一些值,例如-1 循环后
您的返回是在IF语句中,因此Java编译器是
不确定你会输入这个IF。如果你不这样做,你可能会 永远不会从您的方法返回值。因此编译错误。

答案 2 :(得分:0)

如果在阵列中找不到字符串,则不会返回任何内容。

如果条件永远不会被评估为真,你应该返回一些东西(例如,在for循环之外,你可以返回-1)。

在您的情况下,并非所有路径都返回值。

答案 3 :(得分:0)

因为如果你的方法需要返回一些东西,它应该在所有情况下返回:

public int indexOf(String s) {
        for(int i=0;i<strArr.length ;++i) {
            if (strArr[i].equals(s)){
             return i;
            }
       }
     return -1; //if not find
}

如果你的情况永远不会得到满足,它应该会回来。

答案 4 :(得分:0)

public class MyIndexOf {
    private String strArr[] = {"x", "y", "z"};

    public int indexOf(String s) {  
        for (int i = 0; i < strArr.length; i++) {
            if (strArr[i].equals(s)){
                return i;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        MyIndexOf self = new MyIndexOf(); 
        System.out.println(self.indexOf("x"));
    }
}