私はこれを書いた:
(fitness>g.fitness) ? return 1 : return -1;
次のエラーが発生しました。
トークンの構文エラー。代わりにラベルが必要です。
誰かがこの文脈でどのトークンとラベルがあるか説明できますか?
編集:私のコードを修正してくれてありがとう、しかし将来の参考のために、とにかくトークンとラベルが何であるかを説明できますか?
私はこれを書いた:
(fitness>g.fitness) ? return 1 : return -1;
次のエラーが発生しました。
トークンの構文エラー。代わりにラベルが必要です。
誰かがこの文脈でどのトークンとラベルがあるか説明できますか?
編集:私のコードを修正してくれてありがとう、しかし将来の参考のために、とにかくトークンとラベルが何であるかを説明できますか?
トークンは、ある種の意味を持つ個々の文字と文字列です。
第3章:Java言語仕様の字句構造で定義されているトークンは次のとおりです。
構文文法の識別子(§3.8)、キーワード(§3.9)、リテラル(§3.10)、セパレーター(§3.11)、および演算子(§3.12)。
指定された行のトークンは次のとおりです。
"(", "fitness", ">", "g.fitness", ")", "?", "return", "1", ":", "return", "-1", ";"
(空白もカウントされますが、上記から省略しました。)
Javaのラベルは、プログラム内のフローの制御に使用され、識別子の後にコロンが続きます。
ラベルの例はですhello:
。
continue
ラベルは、およびステートメントと組み合わせて使用され、break
どの制御構造を使用するか、continue
または使用するかを指定しますbreak
。
ラベル付きステートメントの詳細については、Java言語仕様のセクション14.7を参照してください。
ここでの問題は、次のreturn
ステートメントにあります。
(fitness>g.fitness) ? return 1 : return -1;
^^^^^^
:
の直後にがありreturn 1
、コンパイラはそこにラベルがあるはずだと思わせます。
ただし、これreturn 1
はそれ自体がステートメントであるため、そこにラベルIDがないため、コンパイラーはラベルを予期していると文句を言いますが、適切に形成されたラベルを見つけることができませんでした。
(fitness>g.fitness) ? return 1 : return -1;
^^^^^^^^ ^
statement label without an identifier
Returnはステートメントであり、?:式が必要なため、受け入れられません。
return (fitness > g.fitness) ? 1 : -1;
おそらくあなたが望むものです。
理解しやすいようにコードを最初に分割するとき、これらの単位はトークンと呼ばれます。labelは、ステートメントで最初に考えられる言語構造を指していると思います。
パーサーがそのエラーメッセージを表示することを決定する方法を理解するには、パーサーを掘り下げる必要があります。パーサーから適切なエラーメッセージを送信することは簡単ではありません。
あなたがする必要があります:
return (fitness>g.fitness) ? 1 : -1;
コンパイラは、コードにコロンがあるため、 labelステートメントを宣言しようとしていると考えていると言っていると思いますが、構文が正しくないため、解析できません。