Cannot find symbol variable

  • Themenstarter Themenstarter Dat
  • Beginndatum Beginndatum
D

Dat

Gast
Hallo Leute Bin gerade erst (mehr oder weniger zwangsweise^^) in Java eingestiegen und hab ein Problem mit einer Aufgabe. Und zwar hab ich in der main Klasse Variablen , die aber in meiner Methode nicht erkannt werden.


Java:
package net.minecraft.src;
import java.util.Random;

public class mod_Tools extends BaseMod
{
     public static final Item Pickaxe = new ItemPickaxe(123,EnumToolMaterial.EMERALD).setItemName("asdf");
	public mod_Tools()
	{ 
          PickAxe.iconIndex = ModLoader.addOverride("/gui/items.png", "/CP.png");
	 
	 ModLoader.AddName(Pickaxe,"Cookie Pickaxe");
	 
	 ModLoader.AddRecipe(new ItemStack(Pickaxe, 1), new Object []{ 
	     "###", " X ", " X ", Character.valueOf('#'), Block.dirt, Character.valueOf('X'), Item.stick 
         });
	}

	public String Version()
	{
		return "3.14159265";
	}
}

Ich hab schon überall gesucht, aber keine passende Lösung gefunden wie die Variablen erkannt werden können. Ausgabe Fehler ist für alle 3 Variablen "Cannot find symbol variable ..."

Wäre super wenn mir jemand helfen könnte
 
Bei einem Fehler kann ich dir (hoffentlich) gleich weiterhelfen: In Zeile 6 definierst du die Variable Pickaxe, in Zeile 9 versuchst du dann aber auf die Variable PickAxe zuzugreifen. Welches sind denn die anderen Variablen, die nicht gefunden werden können? ModLoader und Block? Sind das wirklich Variablen? (gemäß der üblichen Namenkonvention in Java sollten es Klassen sein). Post doch ggf. bitte auch mal den Code der Klasse BaseMod, das könnte weiterhelfen.
 
Java:
package net.minecraft.src;
import java.util.Random;

public class mod_CookieTools extends BaseMod
{
     public static final Item Pickaxe = new ItemPickaxe(123,EnumToolMaterial.EMERALD).setItemName("asdf");
	public mod_CookieTools()
	{
     
     Pickaxe.iconIndex = ModLoader.addOverride("/gui/items.png", "/CP.png");
	 
	 ModLoader.AddName(PickAxe,"Cookie Pickaxe");
	 
	 ModLoader.AddRecipe(new ItemStack(Pickaxe, 1), new Object []{ 
	     "###", " X ", " X ", Character.valueOf('#'), Block.dirt, Character.valueOf('X'), Item.stick 
         });
	}

	public String Version()
	{
		return "3.14159265";
	}


in den Zeilen 4; 10 ; 12 ; 14

mit der gleichen fehlermeldung: cannot find symbol

symbol: variable ModLoader
 
Zeile 4: extends BaseMod: heißt dass Deine Klasse eine Subklasse der Klasse BaseMod ist und er diese nicht findet. Sie müsste im selben Package liegen, wie Deine Klasse, oder Du muss einen import machen (Beispiel dafür findest Du in Zeile 2).
Zeile 10: Hat Dow Jones schon erklärt
Zeile 12/14: ModLoader ist nirgends deklariert. Man muss eine Variable erst deklarieren, bevor man sie benutzen kann (In Zeile 6 findest Du ein Beispiel für eine Deklaration). Kann sein, dass die Variable in der Klasse BaseMod bereits deklariert ist, aber da er diese ja nicht findet...

Und mal ganz allgemein. Woher kommt eigentlich solcher Code!?!
 
Zuletzt bearbeitet von einem Moderator:
Zeile 4: extends BaseMod: heißt dass Deine Klasse eine Subklasse von BaseMod ist. Sie müsste im selben Package liegen, wie Deine Klasse, oder Du muss einen import machen (so wie bei Random).
Zeile 10: Hat Dow Jones schon erklärt
Zeile 12/14: ModLoader ist nirgends deklariert. Man muss eine Variable erst deklarieren, bevor man sie benutzen kann (In Zeile 6 findest Du ein Beispiel für eine Deklaration). Kann sein, dass die Variable in der Klasse BaseMod bereits deklariert ist, aber da er diese ja nicht findet...

Und mal ganz allgemein. Woher kommt eigentlich solcher Code!?!

Danke hat geklappt.

Und außerdem, was ist denn so eigenartig an meinem Code?
 
Und außerdem, was ist denn so eigenartig an meinem Code?
1. Dass Du gänzlich alle Konventionen ignorierst, wie man in Java Klassen, Methoden und Variablen benennt. Das macht ihn für jemanden, der ihn verstehen will, extrem schwer lesbar. Ich hätte z.B. den Fehler, den Dow Jones gefunden hat, nicht so schnell entdeckt.
2. Dass Du auf Variablen in anderen Objekten direkt zugreifst und damit das Prinzip der Kapselung vernachlässigst.
 
Zuletzt bearbeitet von einem Moderator:
Ok, man soll ja nicht nur meckern, sondern auch sagen, wie es besser geht.
- Klassennamen: Große Anfangsbuchstaben, bei zusammengesetzten Wörtern jeweils den Anfangsbuchstaben groß, Substantive Z.B. MeineKlasse
- Variablennamen: Kleine Anfangsbuchstaben, bei zusammengesetzten Wörtern jeweils die folgenden Anfangsbuchstaben groß, Substantive. Z.B. meineVariable
-Methodenamen: Wie Variablennamen, aber am anfang kommt ein Verb, das sagt, was die Methode macht. Z.B. addiere(int x, int y) oder formatiereString(String string).
- Konstanten: Alle Buchstaben groß, bei zusammengesezten Wörtern mit Unterstrich trennen. Z.B. MEINE_KONSTANTE
Damit kommt man schon ein großes Stück weiter.
 

Zurück
Oben