2013-04-06 160 views
-2

我需要確保爲提示輸入的值在100,000到900,000之間,這不起作用,有什麼想法? (我只是一個初學者BTW)輸入驗證(while while循環)

double advertCost; 
    do { 
    System.out.println("Please enter the advertising cost: "); 
    advertCost = input.nextDouble(); 

    } while (advertCost =< 100000 || advertCost => 900000); 

的錯誤,我得到:令牌 語法錯誤「<」,刪除此令牌 操作||未定義的參數類型(一個或多個)INT,布爾 語法錯誤令牌「=」,刪除該令牌

回答

1

比較運算符是<=>=,不=<=>

5

你的問題是你的語法:

while (advertCost =< 100000 || advertCost => 900000); 

在Java中,「小於或等於」運算符是你說的吧。小於或等於。你有平等或低於。同樣的情況對你來說也不錯。它應該看起來像這樣:

while (advertCost >= 100000 || advertCost <= 900000); 

此外,你有你的操作員錯誤的方式。您希望advertCost大於100000且小於900000,但您的運營商暗示小於100,000且大於900,0000。

只是一個預留約你的錯誤

通常,這些類型的問題可以通過錯誤消息的理解。我知道它們看起來很神祕,但如果你學會破譯它們,那麼在語法錯誤方面你確實不需要我們。

Syntax error on token "<", delete this token The operator || is undefined for the argument type(s) int, boolean Syntax error on token "=", delete this token

讓我們切開它到它的部分:

第一部分

消息Syntax error on token "<", delete this token

好了,JRE剛剛解析代碼,它正在經歷每個token。這是它到達的第一個無效的標記,因此會生成此消息。但是,如果你刪除了這個,你仍然有一個無效的if語句,所以讓我們繼續閱讀。

第二部分。

消息The operator || is undefined for the argument type(s) int, boolean

嘛,沒檢測到運營商已經發現,所以JRE必須假定沒有一個人也沒有。當它解析的IF語句的一部分它的發現:

if(a number || something else). 

在這一點上它知道||操作僅適用於兩個布爾值,所以它拋出另一個錯誤。它這樣做是因爲它已經知道代碼會失敗;它不需要檢查另一邊。

最後一部分

消息Syntax error on token "=", delete this token

所以JRE繼續解析,而且它也發現了你的 「=>」。和以前一樣,注意到無效字符,並建議您將其刪除。如果你刪除了「=」,那麼你對If語句的這部分實際上擁有有效的語法。你面對這種類型的錯誤

摘要

下一次,簡單地嘗試打破該消息。它告訴你哪些字符是錯誤的,<=。它甚至會告訴你用什麼去嘗試。顯然它只能猜測,所以這是由你來決定你想要什麼,以及如何讓運行環境理解!

+0

謝謝!我現在感到很傻。 – Chara 2013-04-06 10:40:28

+0

請閱讀我的關於理解錯誤消息的編輯。它可能會在未來幫助你! :) PS:請將此標記爲正確,以免人們繼續看它! :) – christopher 2013-04-06 10:51:21

0
(advertCost <= 100000 || advertCost >= 900000)