2013-04-06 122 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)