この行から「クラス、インターフェイス、または列挙が必要です」というエラーが表示されます。
image RenderList[] = new image[99];
画像は私が作ったクラスです。オブジェクトの配列を作成する方法を尋ねる多くのチュートリアル/スレッドを読みましたが、それらはすべてその行に同意しました。私が見逃しているものは他にありますか?
この行から「クラス、インターフェイス、または列挙が必要です」というエラーが表示されます。
image RenderList[] = new image[99];
画像は私が作ったクラスです。オブジェクトの配列を作成する方法を尋ねる多くのチュートリアル/スレッドを読みましたが、それらはすべてその行に同意しました。私が見逃しているものは他にありますか?
私はこれがうまくいくと確信しています:
package cruft;
public class Image {
private String name;
public Image(String name) {
this.name = name;
}
public static void main(String [] args) {
Image [] images = new Image[args.length];
int i = 0;
for (String name : args) {
images[i++] = new Image(name);
}
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("Image");
sb.append("{name='").append(name).append('\'');
sb.append('}');
return sb.toString();
}
}
それがエラーの原因となっている行である場合、それは単純にimage
タイプ (クラスなど) として解決されないということです。javacc コンパイラは、そのステートメントのどの部分が無効であるかを正確に示す「^」を含む次の行も出力する必要があります。(完全なコンパイラ エラーを投稿に含めることを忘れないでください。)
image
クラスが実際に何と呼ばれているか (クラスは Java 命名規則に従って呼び出される可能性が高いImage
) を確認し、「イメージ」クラスが別の名前空間にある場合は必要なインポートが使用されていることを確認してください。また、コンパイラが JAR/".class"/".java" ファイルの正しい場所を調べていない場合、コンパイラが対応する "image" クラスを見つけられない可能性もあります。
より多くのコンテキスト (たとえば、「イメージ」クラスの定義とコードの両方のセクションが含まれる名前空間) を提供すると、決定的な問題の特定とその解決方法につながります。
括弧だけでなく括弧も使用する必要があります。
image RenderList[] = new image()[99];
それはうまくいくはずです。
Java を初めて使用する場合、最も簡単な方法は、特定のプログラムのすべてのクラスが同じディレクトリにあることを確認することです。おそらく、クラス「イメージ」を別のディレクトリに作成した可能性があります。コンパイラがそれを見つけられない場合、遭遇したエラーのようなものを受け取るだけです。これは私の生徒の間でよくある間違いでした。
何人かの回答者が指摘したように、クラス名の最初に大文字の Image を付けることを忘れないでください。コンパイラは気にしませんが、これは Java プログラマーの間で共通の慣例です。