我是编程和尝试学习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;
}
答案 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)
在if
和while
之后使用方括号。它的好习惯。
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
}