我是这样写的:

(fitness>g.fitness) ? return 1 : return -1;

并收到以下错误:

token 上的语法错误,应使用标签代替。

谁能解释一下在这种情况下什么是 token 和标签?

编辑:感谢您修复我的代码,但您能否解释一下 token 和标签是什么,以供将来引用?

最佳答案

token 是具有某种含义的单个字符和字符串。

Chapter 3: Lexical StructureThe Java Language Specification 中定义的 token 是:



给定行中的标记是:

"(", "fitness", ">", "g.fitness", ")", "?", "return", "1", ":", "return", "-1", ";"

(空格也很重要,但我在上面省略了它们。)

Java 中的标签用于控制程序中的流程,它是一个标识符,后跟一个冒号。

标签的一个例子是 hello:

标签与 continuebreak 语句结合使用,以指定 continuebreak 的控制结构。

Section 14.7The 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/

10-11 22:05
查看更多