2014-12-07 106 views
-2

我是新来处理和我遇到此问题。我不断收到下面代码粗体部分的错误消息。我的语法错了吗?运算符<未定义为参数类型(s)布尔值,int

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

你得到哪个错误信息? – 2014-12-07 20:06:30

+0

如果(0 0 && i <3)'并且从那里。您可以根据需要选择多少&& s或|| s。 – 2014-12-07 20:07:04

+0

你必须向我们解释你正在尝试做什么。即使Java有一个范围运算符,就像有些人假设你正在尝试这样做,'0 Radiodef 2014-12-07 20:09:01

回答

0

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

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

在Java中,检查一个变量是一个范围,你必须声明分为两个部分,像这样:

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

} 

这种特殊的代码将永远是真实的,但是,因为你要求它有两个不同的范围。也许你打算检查两个范围?

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

} 

注意||或运营商而不是运营商,而不是运营商。

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 
+0

我的表达肯定是错误的......我尝试了vaild语法,现在程序运行,但它不会改变中间的3x3块的颜色。 – kairoseno 2014-12-07 20:19:46

+0

@kairoseno我们无法诊断您的程序,因为我们对此一无所知。如果您仍然有问题,请在本网站上发布另一个问题,并提供所有需要的相关代码。如果我的答案回答了您当前的问题,请点击答案左侧的复选标记,将其标记为“已接受”。 – 2014-12-07 20:29:17

0

这段代码有两个不同的问题。首先,你已经在for循环中定义了'i'变量,如“int”。这个'i'的实例在退出for循环时不再被定义 - 所以下面的if语句不会引用那个实例。为了克服这个问题,界定“我” for循环之前...

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

这使我的第二个错误。语法“0 < i < 3”不正确。在c/C++中,运算符一次执行一个...所以在这种情况下,第一个“<”运算符将被评估为“0 < i”,结果将是布尔值(它始终为“真”你的特定代码段)。但重要的一点是,结果是一个布尔值。接下来,代码将尝试使用声明的下一部分 - “true < 3”来评估结果,这只是没有任何意义,因此会收到编译器错误。 在你的代码片段中,除非我的值达到3,否则没有退出到for循环,因此不需要第二个“if”语句。但是,如果你没有想测试一下,看看我是否是1和2(含)之间,那么你就必须打破那些成单独的测试...

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

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

相关问题