我想,这是一个非常简单的问题需要解决,但我无法理解。
一个数组包含一个整数列表,如果数组中的每个数字'x'后跟数字'y',我想返回true。
因此,{x,3,4,y}
或{x,x,y,4,5}
或{5,8,x,x}
的数组将为false
。
{x,y,4,1}
或{x,y,5,1,x,y}
的数组为true
。
这是我到目前为止所尝试的:
for (int i = 0; i < nums.length-1; i++)
{
if (nums[i] == x && nums[i+1] == y)
{
return true;
}
else
{
return false;
}
}
return false;
然而,我的代码只适用于数组中的前两个元素(所以0和1)。它不会检测到阵列中的任何整数,所以我该怎么做?
谢谢。
答案 0 :(得分:5)
如果数组中的每个数字'x'后跟数字'y',我想返回true。
您需要摆脱else
并修改支票,如下所示:
for (int i = 0; i < nums.length - 1; i++)
{
if (nums[i] == x && nums[i + 1] != y)
{
return false;
}
}
return true;
注意事项:
true
,则返回x
。从问题中不清楚这是否是你想要的行为。x
是否是数组的最后一个元素。再说一次,如果是这样的话,你发明的事情并不完全清楚。答案 1 :(得分:1)
for (int i = 0; i < nums.length-1; i++) {
if (nums[i] == 2 && nums[i+1] != 3) {
return false;
}
}
return true;
答案 2 :(得分:1)
如果'x'
号后面没有'y'
,则此代码将返回False。
for (int i = 0; i < nums.length-1; i++)
{
if(nums[i] == 2 && nums[i+1] != 3) {
return false;
}
}
return true;
答案 3 :(得分:1)
当代码到达return
语句时,它会停止执行该函数并返回指定的值,这就是你的for只执行一次的原因。
由于您希望条件应用于数组中的所有元素,因此当您找到一个未跟随3的2时,您必须返回false。如果2后跟3,则只需继续检查下一个职位。
像这样:
for (int i = 0; i < nums.length-1; i++)
{
if(nums[i] == 2 && nums[i+1] != 3)
{
return false;
}
}
return true;
答案 4 :(得分:0)
for (int i = 0; i < nums.length-1; i++)
{
if(nums[i] == 2 && nums[i+1] == 3)
{
return true;
}
}
return false;
答案 5 :(得分:0)
您的代码始终在第一次迭代中返回。因为你在if和else块中都有返回写入。
如果内部还有其他逻辑,则从else案例中删除else案例或仅删除return;
。
int x = 2;
int y=3;
for (int i = 0; i < nums.length-1; i++) {
if (nums[i] == x && nums[i+1] != y) {
return false;
}
}
return true;
如果数组中没有x,则返回true。如果你有任何x之后没有y,它将返回false。
答案 6 :(得分:0)
试试以下
boolean flag = false;
for (int i = 0; i <= (nums.length-1); i++) {
if(nums[i] == x) {
if (i == (nums.length-1)) {
if(nums[i] == x) {
flag = false;
}
} else {
if(nums[i+1] == y) {
flag = true;
} else {
flag = false;
break;
}
}
}
}
return flag;
答案 7 :(得分:0)
您可以尝试以下方法:
if(nums[nums.length - 1] == x)
{
return false;
}
else
{
boolean flag = false;
for(i = 0; i < nums.length - 1; i++)
{
if(nums[i] == x)
{
if(nums[i + 1] == y)
{
flag = true;
}
else
{
flag = false;
break;
}
}
}
return flag;
}