操作员<未定义参数类型boolean,int

时间:2014-12-07 20:05:13

标签: java processing

我是处理新手,我遇到了麻烦。我不断收到下面代码的粗体部分的错误消息。我的语法错了吗?

void block(int x, int y, int s, color tinto) {
    fill(tinto);
    for (int i = 0; i < 3; i++) {
        triple(x, y+i*s, s, tinto);
    }
    if (0 < i < 3 && 6 < i < 9) {  // HERE
        tinto = 255;
    }
    else {
        tinto = tinto - 200;
    }
}

4 个答案:

答案 0 :(得分:1)

在Java中,要检查变量是否在某个范围内,您必须将该语句分为两部分,如下所示:

if (0 < i && i < 3 && 6 < i && i < 9){

}

然而,这个特定的代码永远不会成立,因为你要求它在两个不同的范围内。也许你打算检查两个范围?

if (0 < i && i < 3 || 6 < i && i < 9){

}

注意||或操作员而不是&amp;&amp;和操作员。

答案 1 :(得分:1)

语法无效,我认为你的表达无论如何都是错误的。你说i必须在另一个范围内。我想你的意思是说它可能介于一个或另一个之间。

有效语法示例:代替0 < i < 3,编写i > 0 && i < 3

试试这个:

if ( (i > 0 && i < 3) || (i > 6 && i < 9) )

请注意,以下(显然是您尝试做的)永远不会被评估为true,因为它不能在两个范围内。

if ( (i > 0 && i < 3) && (i > 6 && i < 9) ) // incorrect

答案 2 :(得分:0)

这不是有效的java表达式。尝试:

if (0<i && i<3 && 6<i && i<9){

答案 3 :(得分:0)

此代码段有两个不同的问题。首先,您已在for循环内部的“int”中定义了'i'变量。退出for循环后,不再定义此'i'实例 - 因此下面的if语句不会引用该实例。要解决这个问题,请在 for循环之前定义'i' ...

int i;
for ( i=0; i<3; I++ ) {
    ...
}
if ( i ...

这让我想到了第二个错误。语法“0&lt; i&lt; 3”不正确。在c / c ++中,运算符一次执行一次......所以在这种情况下第一个“&lt;”运算符将被评估为“0&lt; i”,结果将是一个布尔值(在您的特定代码段中将始终为“true”)。但重要的是结果是布尔值。接下来,代码将尝试使用语句的下一部分 - “true&lt; 3”来评估该结果,这听起来没有任何意义,因此会收到编译器错误。     在你的代码片段中,在i的值达到3之前,for循环没有退出,因此不需要第二个“if”语句。但是如果你 想要测试我是否在1到2之间(包括在内),那么你必须将它们分解为单独的测试......

if ( 0 < i && i < 3 ...

最后......如果i的值介于1和2之间(包括),那么它也不能介于7和8之间(包括)...因此,即使在我们编码之后,if语句也将始终为false纠正语法。