teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

3回答

417閲覧

Java 識別子<identifier>について

kazuko_toyoda

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2023/12/31 11:21

0

0

実現したいこと

・識別子<identifier>というエラーになった理由と解決方法が知りたいです。

前提

組込みメソッドを使って、mainメソッドにある2つの配列をanimal メソッドで繋げ表示させるプログラムを書いております。
animalメソッドを作成する際、identifierというエラーが表示されました。

発生している問題・エラーメッセージ

First.java:11: エラー: <identifier>がありません public static void String (animal(String[] a,String [] b)) { ^

該当のソースコード

class First { public static String[] eigoTeacher(String[] data){ //配列を宣言し、初期化する String[] array1 = {"inu","neko","usagi"}; String[] array2 = {"tanuki","kitune","saru"}; animal(array1, array2);  } public static void String (animal(String[] a,String [] b)) {. //<identifier>エラーが発生 String len = a.length + b.length; String[] array3 = new int[len]; // array3 にaの配列をコピーしています System.arraycopy(a, 0, array3, 0, a.length); // 次にarray3 にbをコピーしています System.arraycopy(b, 0, array3, a.length, b.length); for(int i = 0; i < len; i++) { System.out.println(array3[i]); } } }

試したこと

識別子<identifier>について調べてみたところ、「文法的に解釈できないコーディングをされている可能性を指摘している状態」と出てきました。animalメソッドの作成の仕方が間違っているのか、animalメソッドの中のコードの記述の仕方が間違っているのか調べてもわかりませんでした。ご教授お願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2023/12/31 11:28

そのエラーに限って言えば、以下の様に修正するのでしょう。 public static void String (animal(String[] a,String [] b)) {. => public static void animal(String[] a, String [] b) {
jimbe

2023/12/31 12:50 編集

>animalメソッドの作成の仕方が間違っている です。 メソッド名 (="<identifier>") のはずの個所がメソッド名になっていないためです。
guest

回答3

0

google翻訳

エラー: <識別子>がありません

そもそも、その記述がJAVAの文法になっていません。
基本的な文法をもちっと学ぼう、ってことになります

投稿2023/12/31 12:27

編集2023/12/31 12:29
y_waiwai

総合スコア88173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

識別子<identifier>というエラーになった理由と解決方法が知りたいです。

最初の認識から間違っています。「識別子というエラー」じゃなくて「識別子が無いというエラー」です。
エラーメッセージにも「ありません」と書いてあるのですが。
識別子というのは、変数名、メソッド名、クラス名などの名前のことで、この場合はメソッド定義の先頭部分なので「メソッド名が書いてない」というエラーです。

メソッド定義の先頭は、「修飾子 戻り値の型 メソッド名(引数並び)」です。上記だとpublicstaticが修飾子で、そのあとに戻り値の型相当のvoidStringという矛盾する物が2つ書いてあって、メソッド名が書かれていません。矛盾というのはvoidと書くと「値を返さないメソッド」を意味するし、Stringと書くと「String型の値を返すメソッド」を意味してこれは両立しないからです。
public static void String (animal(String[] a,String [] b)) はおそらく
public static void animal(String[] a,String [] b)という意図かと思いますが、
「なぜここにStringと書いてしまったのか?」「なぜ余分の括弧を付けてしまったのか?」がちょっと想像できない謎です。
その他にもStringintの意味が分かってないのではないかと思える間違いがあるので、上記の修正だけでは動きません。

投稿2023/12/31 13:44

otn

総合スコア86341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

メソッド定義は
【メソッド修飾子(の繰り返し)】 返り値の型 メソッド名 ( 【引数の型 引数の識別子】【, 引数の型 引数の識別子(の繰り返し)】)
という形をしていますね( 【】 の部分は"あるかもしれないしないかもしれない"くらいのつもりです)

Javaコンパイラ(パーサ)の気持ちになって

public static void String (animal(

の部分を読むと
public → メソッド修飾子のpublicだな
static → メソッド修飾子のstaticだな
void → 型が来たからメソッド修飾子終わったな。メソッドの返り値はなし(void)ね
String → メソッド名はStringね
( → 引数の羅列が始まるな
animal → 引数あるんだな。第1引数の型はanimalね
( → いやここに来るのは第1引数の識別子じゃなきゃおかしいだろ。なんで(が来るんだよ!?

ってなって「識別子<identifier>がありません」というエラーを出します

本当はどう書きたかったのか? はコンパイラには分かりません。なにせ人間ですら「本当はどう書きたかったの?」と思うくらいにひどい文法エラーですから
コンパイラは粛々と「本当ならここには識別子<identifier>がくるはず」ということを教えてくれるだけです

(人間なら「なんでメソッド名にStringなんて付けてるんだ? ここの時点でなにかおかしいだろ」とは思うでしょうけれども)

投稿2024/01/04 04:20

編集2024/01/04 04:22
quickquip

総合スコア11310

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問