我是这样写的:
(fitness>g.fitness) ? return 1 : return -1;
并收到以下错误:
token 语法错误,应改为标签。
谁能解释一下这种情况下的标记和标签是什么?
编辑:感谢您修复我的代码,但您能否解释一下 token 和标签是什么,以供将来引用?
最佳答案
标记是具有某种含义的单个字符和字符串。
token ,如 Chapter 3: Lexical Structure 中所定义的 The Java Language Specification , 是:
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 中的标签用于控制程序中的流程,是一个标识符,后面跟一个冒号。
标签的一个例子是hello:
。
标签与continue
和break
语句一起使用,以指定要continue
或break
的控制结构> 到。
在 Section 14.7 中有更多关于标签声明的信息的 The Java Language Specification .
这里的问题是 return
语句:
(fitness>g.fitness) ? return 1 : return -1;
^^^^^^
:
紧跟在 return 1
之后,这让编译器认为那里应该有一个标签。
然而,return 1
本身就是一个语句,因此,那里没有标签标识符,因此编译器提示它期待一个标签,但找不到格式正确的标签。
(fitness>g.fitness) ? return 1 : return -1;
^^^^^^^^ ^
statement label without an identifier
关于Java 定义 : Label, token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1988137/