Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中使用FOR循环时,return语句来自何处_Java - Fatal编程技术网

在JAVA中使用FOR循环时,return语句来自何处

在JAVA中使用FOR循环时,return语句来自何处,java,Java,我在用Java做一些小的for循环练习,结果陷入了进退两难的境地。我有两个for循环,它们应该给出相同的结果,但它们不是。函数应该从名为target的数组中获取一个数组和一个字符串作为参数,并返回目标的索引 public static void main(String [] args){ int a = indexOffFirstOcc(new String[]{"Mick", "Heinrich", "Pipo", "Mambo"}, "Mick"); System.out.pri

我在用Java做一些小的for循环练习,结果陷入了进退两难的境地。我有两个for循环,它们应该给出相同的结果,但它们不是。函数应该从名为target的数组中获取一个数组和一个字符串作为参数,并返回目标的索引

 public static void main(String [] args){
  int a = indexOffFirstOcc(new String[]{"Mick", "Heinrich", "Pipo", "Mambo"}, "Mick");
   System.out.print(a);
}
循环1更清晰,工作正常,返回符合条件的int a

 public static int indexOffFirstOcc2 (String[] stringArray, String target){

    for (int i = 0; i < stringArray.length; i++) {
        if (stringArray[i].equals(target)) {
            return i;
        }
    }
    return -1;
}
public static int indexOffFirstOcc2(字符串[]字符串数组,字符串目标){
对于(int i=0;i
然而,我尝试了类似这样的东西,循环2

 public static int indexOffFirstOcc (String[] stringArray, String target){

    int stringLenght=stringArray.length;
    int result=0;
    for (int i=0; i<stringLenght;i++){
        if (stringArray[i].equals(target)){
           result = result + i;
        }
        else {
            result=-1;
        }
    }return result;

}
public static int indexOffFirstOcc(String[]stringArray,String目标){
int stringLenght=stringArray.length;
int结果=0;

对于(int i=0;i您需要在找到匹配项后
中断
。在第一种情况下,您在找到匹配项后返回。如果您有
else
块,则它将在找到匹配项后执行,导致
结果
被(重新)设置为-1

另外,您不应该将
i
添加到
result
。您的目的是查找匹配发生的索引

int result = -1;
for (int i = 0; i < stringLength; i++) {
    if (stringArray[i].equals(target)){
        result = i;
        break;
     }
}
int结果=-1;
对于(int i=0;i
找到结果后,您需要中断循环。否则,尽管找到了正确的结果,您仍将继续循环

您还需要删除else语句,因为否则循环将只返回最后一个条目作为结果,如果不匹配,则返回-1:

public static int indexOffFirstOcc (String[] stringArray, String target){

int stringLenght=stringArray.length;
int result = -1; // instead of else statement declare. -1 here, as not found
for (int i=0; i<stringLenght;i++){
    if (stringArray[i].equals(target)){
       result = result + i;
       break;        
     }
}
return result;
}
public static int indexOffFirstOcc(String[]stringArray,String目标){
int stringLenght=stringArray.length;
int result=-1;//而不是else语句在此处声明-1,因为找不到

对于(int i=0;i在循环(
System.out.println(…)
)中放置一些打印,并在执行时检查所有值。根据您的预期检查,您将在不到5分钟内发现错误(或者使用您的IDEs调试器工具实现相同的目标).
stringLenght
拼写错误应该是
stringLength
拼写错误,但在这种情况下,它没有米,因为它是一个整数的名称。为什么要向下投票?这是一个糟糕的描述吗?我想我也可以用return语句打断它。如果你有时间,请看一下这个,并告诉我dif是什么循环之间的引用。在这里,我不使用中断,而是按照它应该的方式工作。提前感谢。您提供的链接已中断