我是处理新手,我遇到了麻烦。我不断收到下面代码的粗体部分的错误消息。我的语法错了吗?
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;
}
}
答案 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纠正语法。