我写了这个:
(fitness>g.fitness) ? return 1 : return -1;
并收到以下错误:
令牌上的语法错误,而不是标签.
任何人都可以解释在这种情况下令牌和标签是什么?
编辑:感谢您修复我的代码,但是您能解释一下令牌和标签是什么,以备将来参考吗?
解决方法:
标记是具有某种含义的单个字符和字符串.
在The Java Language Specification的Chapter 3: Lexical Structure中定义的令牌是:
identifiers (§3.8), keywords (§3.9),
literals (§3.10), separators (§3.11),
and operators (§3.12) of the syntactic
grammar.
给定行中的标记是:
"(", "fitness", ">", "g.fitness", ")", "?", "return", "1", ":", "return", "-1", ";"
(空白也很重要,但我从上面省略了它们.)
Java中的标签用于控制程序中的流,并且是标识符,后跟冒号.
标签的一个例子是你好:
标签与continue和break语句一起使用,以指定要继续或中断的控制结构.
有关标签声明的更多信息,请参见The Java Language Specification的Section 14.7.
这里的问题是return语句:
(fitness>g.fitness) ? return 1 : return -1;
^^^^^^
有一个:紧跟在返回1之后,这使编译器认为那里应该有一个标签.
但是,返回1本身就是一个语句,因此,那里没有标签标识符,因此编译器抱怨它期待一个标签,但它无法找到正确形成的标签.
(fitness>g.fitness) ? return 1 : return -1;
^^^^^^^^ ^
statement label without an identifier