我是这样写的:
(fitness>g.fitness) ? return 1 : return -1;
并收到以下错误:
token 上的语法错误,应使用标签代替。
谁能解释一下在这种情况下什么是 token 和标签?
编辑:感谢您修复我的代码,但您能否解释一下 token 和标签是什么,以供将来引用?
最佳答案
token 是具有某种含义的单个字符和字符串。
Chapter 3: Lexical Structure 的 The Java Language Specification 中定义的 token 是:
给定行中的标记是:
"(", "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/