如何用while循环替换for循环方法

时间:2019-04-24 12:48:15

标签: java arrays

我是编程和尝试学习Java的新手。我试图用while循环替换此方法中的for循环。任何人都可以帮我,因为我编写的代码不正确。

这是原始的

^[-+]?(?:-[0-9]|[0-9]|[0-7]?)$

这是我到目前为止所写的,但是我一直在学习i ++。是无法到达的。不知道我到目前为止所写的内容是否正确,但是我将不胜感激。谢谢

public static int doSomething(int [] a, int x) {
    for (int i = 0; i < a.length; ++i)
        if (a[i]<=x) return i;

    return -1;
}

4 个答案:

答案 0 :(得分:4)

仅此部分:if (a[i]<=x) return i;for循环内。这将是等效的:

int i=0
while (i < a.length) {
    if (a[i]<=x) return i; // check for condition and return on true
    i++; // increase the counter on every loop
}
return -1; // default return value

答案 1 :(得分:2)

ifwhile之后使用方括号。它的好习惯。

public static int doSomething(int [] a, int x) {
    i=0;
    while (i < a.length){
        if(a[i] <=x){ 
           return i; 
        }
        i++;    
    }
    return -1;
}

答案 2 :(得分:2)

return语句之后的所有内容都是无效代码。

i=0;

while (i < a.length){
    if(a[i] <= x) { 
        return i;
        i++; // This is your mistake
    } else {
        return -1;
    }
}

return i;

应为:

i=0;
while (i < a.length){
    if(a[i] <= x) { 
        return i;
    }
    i++;
}
return -1;

请注意,您犯了另一个逻辑错误: 在你的最后一个

返回我;

如果a.length == 0,则while循环内的代码将不会执行,因此您的函数将返回0,但是应该返回-1。

答案 3 :(得分:0)

您的i ++无法访问,因为它位于return语句后面。您可能希望将其移出if情况。

i=0;

while (i < a.length){
    if(a[i] <=x){ 
        return i;
        i++;  //from here 
        }
        i++   //to here
        /* this block is also not what you want, this block would be exectued every time
           a[i] <=x would be false, so probably most of the time. 
        else{
        return -1;     //you should move this frome here
        }
        */
    }

    return i;   //to here, and remove the return i; . If the while loop is done and hasen't returned 
                //with your first return statement, then it shouldn't return with i here either. 
                //It should return with the -1 from above
}