在JAVA中使用FOR循环时,return语句来自何处
我在用Java做一些小的for循环练习,结果陷入了进退两难的境地。我有两个for循环,它们应该给出相同的结果,但它们不是。函数应该从名为target的数组中获取一个数组和一个字符串作为参数,并返回目标的索引在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
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是什么循环之间的引用。在这里,我不使用中断,而是按照它应该的方式工作。提前感谢。您提供的链接已中断