2014-12-07 45 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語句在編寫它時,即使在我們糾正語法之後,它也將始終爲假。

相關問題