为什么这段代码会给我一个错误?我正在尝试返回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;
}
}
}
答案 0 :(得分:4)
如果找不到字符串,则不会从方法返回
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"));
}
}
提交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"));
}
}