使用for循环测试数字是否为奇数

时间:2012-09-10 10:12:34

标签: java loops for-loop

我正在编写一个方法来检查数组中包含多少个奇数。我的想法是使用for循环来测试数字是否为奇数,如果是,则将变量b加1,然后返回b作为赔率数。我是这样写的:

for ( int a = 0, b = 0; values[a]%2==1;a++){
b++;
}

return b;

但它给了我一个错误“返回b;        ^ b无法解决“。

我做错了什么?

6 个答案:

答案 0 :(得分:2)

变量b在for语句中定义,仅在该代码块中可见。

试试这个

int b = 0;
for ( int a = 0; values[a]%2==1;a++){
b++;
}

return b;

答案 1 :(得分:2)

你已经在你的循环范围内定义了b - 它不会在你的回归中显示出来。你可以像这样重写:

int b = 0
for ( int a = 0; values[a]%2==1;a++){
b++;
}

return b;

答案 2 :(得分:1)

当您尝试访问已定义范围之外的变量时,会出现此错误。

// b is defined in this scope and available here only
for ( int a = 0, b = 0; values[a]%2==1;a++){

    b++;
}

// Nothing as b is available outside scope
return b;

要解决此问题,只需在较大的范围内声明b

int b=0;
for ( int a = 0; values[a]%2==1;a++){
    b++;
}

return b;

答案 3 :(得分:1)

其他答案指出导致编译错误的原因。还应该注意算法是错误的。问题是循环在第一次values[a]%2==1false时终止。换句话说,它计算第一个偶数之前的奇数的数量 ...而不是奇数的总数。

答案 4 :(得分:0)

http://www.roseindia.net/java/beginners/IfElse.shtml

查看本教程。它应该告诉你需要知道的一切,并且比你的方法更简单。

答案 5 :(得分:0)

您不需要b值来检查数组的结尾。你有什么相似的

for (int a = 0; a < values.length;a++)
    if(values[a]%2!=1)
        return a;

// currently throws an exception.

你可能想要的是计算看起来像这样的奇数值。

int count = 0;
for (int a = 0; a < values.length;a++)
    if(values[a] % 2 !=0)
        count++;
return count;

int count = 0;
for (int v: values)
    count += v & 1;
return count;