<identifier> expected

Kel

Aktives Mitglied
Java:
import java.awt.Color;

public class Auto {

	String marke;
	String klasse;
	float preis; // in €
	int baujahr;
	Color farbe;
	int ps;
	int tueren; // Anzahl der T&uuml;ren
	int aktuelleGeschwindigkeit;
	int hoechstGeschwindigkeit; // in km/h
	int zurueckgelegteStrecke;
	int emission = 13; //in Gramm CO2 pro Kilometer
	boolean gruenePlakette;
	boolean gueltigerTuev;

        int beschleunigung = 12;
	int geschwindigkeit = 0; 
	geschwindigkeit = geschwindigkeit + beschleunigung;
	System.out.println(geschwindigkeit);
	
	public Auto() {
		// Beispiel: 
		System.out.println("Beispiel: ");
		gueltigerTuev = false;
		System.out.println(gueltigerTuev);
		gueltigerTuev = true;
		System.out.println(gueltigerTuev);
        }

	public static void main(final String arg[]) {
		new Auto();
	}
}

Genaue Fehlermeldung
Auto.java:64: <identifier> expected
geschwindigkeit = geschwindigkeit + beschleunigung;
^
1 error
Zeilenangaben stimmen zwar nicht, weil ich alles unnötige rauskopiert habe, aber die Fehlermeldung ist ja recht eindeutig. Nur leider kapier ich das nicht.

Google sagt mir was von
Der angezeigte Fehler rührt aber daher, dass Du versuchst, Code, der so nur in einer Methode vorkommen darf, direkt im Klassenzusammenhang auszuführen. So kannst Du zwar einer definierten Variable direkt bei der Initialisierung einen Wert mitgeben (wie bei String s = "Hallo"), aber nicht erst definieren und dann später ausserhalb einer Methode zuweisen (int b; b = 1; geht nicht).

Wenn Du Klassenvariablen gleich bei der Erzeugung initialisieren willst, muss Du das entweder bei deren Deklaration oder im Konstruktor machen:

Nur ist das für mich als ziemlicher Javaeinsteiger doch etwas .... verwirrend.
Kann mir da jemand helfen?
 

Volvagia

Top Contributor
Hat mich auch verwirrt. :autsch:
Du kannst außerhalb einer Methode einer bereits deklarieren Variable keinen anderen Wert zuweißen. Und ein System.out.println geht dort erstrecht nicht.

Für Geld sollte man übrigens keine Gleitkommazahlen verwenden. (Ungenau) Lieber Ganz und in Cent.
 

Kel

Aktives Mitglied
Das würde erklären, weshalb es funktioniert, wenn ich es einkapsel.

Java:
void Aufgabe2_6() {
	// Das Auto hat eine Beschleunigung von 12km/h pro Sekunde.
	//Die Geschwindigkeit in einer Sekunde erhöht sich um die Beschleunigung
		int beschleunigung = 12;
		int geschwindigkeit = 0; 
		geschwindigkeit = geschwindigkeit + beschleunigung;
		System.out.println(geschwindigkeit);
	}

Wie ich das void-Ding wieder aufrufe, um mein System.out.println() zu kriegen, weiss ich bisher aber noch nicht :D.

Ach, die Programmierkonvention, dass Geld wegen Rundungsfehlern immer in Centeinheiten als Ganzzahlen verwendet werden? Das werden aber recht große Zahlen, naja egal.
Also "int preis" statt "float preis"?
 
Zuletzt bearbeitet:
A

anfangs

Gast
Sieh dir mal an, in welcher Reihenfolge eine Programm gestartet wird, also erst statische Variablen usw., dann main(). Code, der nicht diesem Schema genügt, kann auch nicht abgearbeitet werden. Anweisungen außerhalb von Methoden, außer Deklarationen usw., zählen dazu. Also entweder oder..
 

Volvagia

Top Contributor
Das ist kein Void-Ding, sondern eine Methode.
Einfach "Aufgabe2_6();" schreiben. Allerdings wirst du die Variable immer neu erzeugen, sie wird erneut auf 12 gesetzt und das ausgegeben. Schau dir doch erstmals die Basics an.

Um jede Sekunde um 12 zu beschleunigen, brauchst du einen Thread oder einen Timer. Alternativ auch so einen SwingWorker, den ich aber nur vom Lesen kenne.

Übrigens schreibt man Methoden immer klein und Camcelcase, sonst gibt es später Probleme.

Edit: float/double kann nicht alle Zahlen genau darstellen. Deshalb wäre es sicherer. int kann bis ca. 2 Milliarden, was über 20 Millionen Euro wären.
 
Zuletzt bearbeitet:

Kel

Aktives Mitglied
Die Grundlagen werden aktuell ja erst unterrichtet, ich halte mich im Gegensatz zum Rest noch wacker, die schaffen es teilweise nichtmal, das JDK richtig zu installieren.

Okay, grade nochmal in mein Skript geschaut.
Also, es gibt eine Startklasse, welche die main()-Methode beinhaltet. Die main()-Methode wird immer als erstes von der JVM aufgerufen und die darin enthaltenen Funktionen ausgeführt.

Im Beispiel oben ist die Startklasse "public class Auto" und beinhaltet somit die "public static void main(final String arg[])". Diese ruft "new Auto();" auf, und da hab ich keine Ahnung, was das Ding macht, dass hatten wir noch nicht :rtfm:.

Innerhalb der "public class Auto" kann ich jetzt meine Methoden definieren mit methodenname().
Sowas wie Threads oder Timer sind wohl noch leider etwas entfernt, geht recht langsam voran.

Bleiben noch 3 Fragen (sofern der Rest da oben richtig ist):
1: wie führe ich z.B. Aufgabe2_6 so aus, dass ich eine Ausgabe auf der Konsole habe? Methoden haben wir noch nicht wirklich behandelt, nur kurz angeschnitten im Skript als Bestandteil der Javastruktur.
2: was tut "public class Auto"
3: was tut "new Auto();"
 

Volvagia

Top Contributor
New Auto erzeugt ein neues Auto.
public class Auto ist der Konstruktor des Autos, dieser wird immer abgearbeitet, wenn ein neues Auto erzeugt wird.
Entwerder in der Main

Java:
Auto auto = new Auto();
auto.Aufgabe2_6();

Oder im Konstruktor

Java:
Aufgabe2_6();
 

Kel

Aktives Mitglied
Also ist "publich class Auto" sowas wie die Haupt-Autoklasse mit globalen Variablen und mit der Bildung neuer Instanzen über "New Auto()" erzeugt man eine neue Instanz der Klasse Auto, welche alle globalen Eigenschaften ihrer Klasse hat, man aber in der erzeugten Instanz noch beliebige Sachen ändern kann?

Wenn ich
Java:
public static void main(final String arg[]) {
	new Auto();
	Auto auto = new Auto();
	auto.Aufgabe2_6();
	}
schreibe, gibs direkt eine Exception

Exception in thread "main" java.lang.NullPointerException
at Auto.<init>(Auto.java:19)
at Auto.main(Auto.java:134)
 

Kel

Aktives Mitglied
Okay, dann hau ich mal den kompletten Code hier rein, anscheinend gibs hier aber keine Spoilertags, wird also recht lang.
Sofern man die "void Aufgabe2_x()" Sachen entfernt, gibt es den beschriebenen Fehler beim kompilieren.

Java:
import java.awt.Color;

public class Auto {

	String marke;
	String klasse;
	int preis; // in €
	int baujahr;
	Color farbe;
	int ps;
	int tueren; // Anzahl der T&uuml;ren
	int aktuelleGeschwindigkeit;
	int hoechstGeschwindigkeit; // in km/h
	int zurueckgelegteStrecke;
	int emission = 13; //in Gramm CO2 pro Kilometer
	boolean gruenePlakette;
	boolean gueltigerTuev;
	boolean Aufgabe1_1 = farbe == Color.green;
	boolean Aufgabe1_2 = marke.equals("Nissan") && !marke.equals("Golf");
	boolean Aufgabe1_3 = baujahr > 2000;
	boolean Aufgabe1_4 = gruenePlakette == true && gueltigerTuev == true;
	boolean Aufgabe1_5 = tueren == 3 || tueren == 5;
	boolean Aufgabe1_6 = (baujahr > 2008 && gruenePlakette == true && klasse == "Kleinwagen");
	boolean Aufgabe1_7 = (ps % 2 == 0);
	boolean Aufgabe1_8 = tueren <= 3 && hoechstGeschwindigkeit >= 250;
	boolean Aufgabe1_9 = hoechstGeschwindigkeit >= ps * 1.8;
	boolean Aufgabe1_10 = (preis > 1500000 && preis < 2500000) && (!klasse.equals("Kleinwagen")) || (klasse.equals("Kleinwagen") && farbe == Color.red && marke.equals("VW") && baujahr < 1978);
	
	void Aufgabe2_1() {
	//Es handelt sich um einen Ökowagen, falls die Emission unter 120 Gramm CO2 pro Kilometer liegt: 
		boolean oekowagen = emission < 120;
		System.out.println(oekowagen);
	}
	
	void Aufgabe2_2() {
	// Dreitürer haben drei Türen: 
		boolean dreituerer = tueren == 3;
		System.out.println(dreituerer);
	}
	
	void Aufgabe2_3() {
	// Das Auto hat keine 200 PS: 
		boolean x = ps != 200;
		System.out.println(x);
	}
	void Aufgabe2_4() {
	// Das Auto hat einen 4.2 Liter Motor:
		double motor = 4.2; 
		System.out.println(motor);
	}
	
	void Aufgabe2_5() {
	// Das Auto kostet unter 20.000€ und ist gelb oder grün: 
		boolean niceCar = preis < 2000000 && (farbe == Color.yellow || farbe == Color.green);
		System.out.println(niceCar);
	}
	
	void Aufgabe2_6() {
	// Das Auto hat eine Beschleunigung von 12km/h pro Sekunde.
	//Die Geschwindigkeit in einer Sekunde erhöht sich um die Beschleunigung
		int beschleunigung = 12;
		int geschwindigkeit = 0; 
		geschwindigkeit = geschwindigkeit + beschleunigung;
		System.out.println(geschwindigkeit);
	}
	
	void Aufgabe2_7() {
	// Das Auto ist ein Golf: 
		String modell = "Golf";
		System.out.println(modell);
	}

	void Aufgabe2_8() {
		// Das Auto wurde zwischen 1998 und 2000 gebaut: 
		boolean guterJahrgang = baujahr > 1998 && baujahr <= 2000;
		System.out.println(guterJahrgang);
	}
	
	void Aufgabe2_9() {
		// Der Preis des Auto lässt sich glatt durch 36 teilen: 
		boolean ratenZahlung = preis % 36 == 0;
		System.out.println(ratenZahlung);
	}
	
	void Aufgabe2_10() {
		// Aufgrund eines Angebotes verringert sich der Preis des Autos 
		int preis = 3000000; 
		int nachlass = 500000;
		preis -= nachlass;
		System.out.println(preis);
	}
	
	public Auto() {
		// Beispiel: 
		System.out.println("Beispiel: ");
		gueltigerTuev = false;
		System.out.println(gueltigerTuev);
		gueltigerTuev = true;
		System.out.println(gueltigerTuev);
	}

	void gas() {
		if (aktuelleGeschwindigkeit <= hoechstGeschwindigkeit - 30) {
			aktuelleGeschwindigkeit += 1;
		}
	}
	
	void bremsen() {
		if (aktuelleGeschwindigkeit > 0) {
			aktuelleGeschwindigkeit -= 1;
		}
	}

	void vollbremsung() {
		aktuelleGeschwindigkeit /= 2;
	}
	
	void eineStundeFahrt() {
		zurueckgelegteStrecke += aktuelleGeschwindigkeit;
	}
	
	void bisherigeEmission() {
		emission *= zurueckgelegteStrecke;
		if (emission > 1000 && emission < 10000) {
			emission /= 1000;
		}
		else {
			emission /= 10000;
		};
		
	}

	public static void main(final String arg[]) {
		new Auto();
		Auto auto = new Auto();
		auto.Aufgabe2_6();
	}

}
 

Volvagia

Top Contributor
Die Variable Marke zeigt zu dem Zeitpunkt ja noch auf kein Objekt, deshalb kannst du keine Instanzmethoden aufrufen.

Mit
Java:
new Auto();
Auto auto = new Auto();
auto.Aufgabe2_6();

erzeugst du jetzt aber 2 Autos. Wenns im richtigen Leben nur auch so einfach gehen würde. Unsere ganze Wirtschaft wäre im Eimer, aber keiner müsste mehr zu Fuß gehen.
 

Volvagia

Top Contributor
Objektvariablen (also alles außer primitive Dateitypen wie int, long, double, char etc.) sind quasi nur Speicheradressen die sagen, wo das Objekt zu finden ist. Nach der Deklaration, wenn ihnen da nichts zugewiesen wird, zeigen sie auf garnichts (null).
Damit sie auf etwas zeigen, musst du zuerst das Objekt erzeugen (Anführungszeichen bei Strings, new bei den meisten anderen Zeug) und ihnen zuweisen. (=)
Erst dann können Instanzmethoden aufgerufen werden, denn wenn nichts da ist, kann er auch garnichts aufrufen.
 
A

anfangs

Gast
Und jetzt nochmal für Leute, die 3 Vorlesungen Java hatten und grade bei den Schleifentypen angekommen sind :rtfm:.

Was ist denn das ziel des ganzen oder die Aufgabenstellung? Man kann doch jetzt schlecht alles erklären, was Fehler im obigen Code mit sich bringen. Vielleicht ist es sinnvoll, das Vorlesungsmanuskript durchzulesen, vielleicht ist es sinnvoll, Sekundärliteratur zu lesen. Oder geht es nur darum, warum "<identifier> expected" ausgeben wird??
 

Kel

Aktives Mitglied
Was ist denn das ziel des ganzen oder die Aufgabenstellung? Oder geht es nur darum, warum "<identifier> expected" ausgeben wird??
Darum ging es mir erstmal. Aktuell sind unsere Tutoren wohl schon froh, wenn wir auf der Kommandozeile compilieren können, Zuweisungs- und Vergleichsoperator nicht durcheinanderbringen und wissen, dass es verschiedene Datentypen gibt.
Aber dass genügt mir soweit nicht, darum wollte ich etwas tiefer in die Materie für ein besseres Verständnis, was ich da eigentlich mache.

Ich werd mir die Tage mal "Java ist auch eine Insel" anschauen, ist ja gratis. Hoffentlich beantwortet dass meine Grundlagenfragen auf einer zugänglicheren Basis, als direkt mit den Fachwörtern hier konfrontiert zu werden. Die kommen dann nach den Grundlagen dran.
 
Zuletzt bearbeitet:

Volvagia

Top Contributor
Schau dir mal Java in 21 Tagen an. Wird hier eher empfohlen, was ich so mitgekriegt habe. Insel wird hier eher nur als Nachschlagewerk betrachtet. Hab damit aber keine Erfahrung, hab die Basics schon von PHP gekonnt, und den meisten Rest durch Try and fail, and try again and fail again, and try again... und ab und zu fragen herausgefunden, bzw. finde es noch immer heraus. ^^
 
A

anfangs

Gast
Ich werd mir die Tage mal "Java ist auch eine Insel" anschauen, ist ja gratis. Hoffentlich beantwortet dass meine Grundlagenfragen auf einer zugänglicheren Basis, als direkt mit den Fachwörtern hier konfrontiert zu werden. Die kommen dann nach den Grundlagen dran.

eine gute wahl ;)

und viel Erfolg bei den Studien.

Anmerkung: hör' nicht auf vagia, denn das eignet sich, um es komplett zu lesen.
 

Crian

Top Contributor
Ich kenne Java in 21 Tagen nicht, daher fehlt mir der Vergleich, aber ich fand die Insel gut, zum lernen und auch zum Nachschlagen. Ich hab mir auch einen dicken Wälzer gekauft (Handbuch der Javaprogrammierung) aber kam damit nicht so gut klar.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
monsterherz error: <identifier> expected Java Basics - Anfänger-Themen 2
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
franzi.ska Blue-j: ‘]‘ expected Java Basics - Anfänger-Themen 1
C error: <identifier> expected Java Basics - Anfänger-Themen 13
P <identifier> expected Java Basics - Anfänger-Themen 3
J Compiler-Fehler Illegal Start of expression / '/'expected Java Basics - Anfänger-Themen 3
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
Z Klassen Error: ';' expected - was mache ich falsch? Java Basics - Anfänger-Themen 4
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
J Syntax error on token ";",, expected Java Basics - Anfänger-Themen 2
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
W Compiler-Fehler Fehler - <identifier> expected, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
D Compiler-Fehler error: .class expected Java Basics - Anfänger-Themen 2
S Compiler-Fehler error: ';' expected (finde Fehler nicht) Java Basics - Anfänger-Themen 10
P <identifier> expected Fehler bitte um Hilfe Java Basics - Anfänger-Themen 5
J identifier expected Java Basics - Anfänger-Themen 2
D Erste Schritte Fehlermeldung "Syntax error on token ";", { expected after this token" Java Basics - Anfänger-Themen 13
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
B Compiler-Fehler 86:11: error: ';' expected obwohl kein ";" hingehört! Java Basics - Anfänger-Themen 10
F .class expected Java Basics - Anfänger-Themen 3
M Syntax error on token ";", { expected after this token Java Basics - Anfänger-Themen 3
0 .class expected Arrays -- warum? Java Basics - Anfänger-Themen 9
P Compiler-Fehler "class, interface, or enum expected" Java Basics - Anfänger-Themen 5
K class, interface or enum expected Java Basics - Anfänger-Themen 14
S expected java.lang.string but found char Java Basics - Anfänger-Themen 5
R Switch Abfrage: Found boolean but expected int? Java Basics - Anfänger-Themen 7
T class, interface, or enum expected Java Basics - Anfänger-Themen 2
L Polymorphie <identifier> expected trotz "Angabe" Java Basics - Anfänger-Themen 2
2 <identifier> expected - Problem Java Basics - Anfänger-Themen 2
O Fragezeichenoperator assert expected Java Basics - Anfänger-Themen 7
S Methode mit zweidimensionalem Array als Parameter: '.class' expected Java Basics - Anfänger-Themen 2
H einfaches Array -> ']' expected Java Basics - Anfänger-Themen 9
W '.class' expected Java Basics - Anfänger-Themen 5
J class, interface, or enum expected - finde Fehler nicht. Java Basics - Anfänger-Themen 4
I ';' expected, kann den Fehler nicht finden... Java Basics - Anfänger-Themen 2
D class, interface or enum expected Java Basics - Anfänger-Themen 2
J class expected Java Basics - Anfänger-Themen 4
M return Fehler .class expected Java Basics - Anfänger-Themen 19
J class, interface, or enum expected Java Basics - Anfänger-Themen 4
danielita Identifier Expected Java Basics - Anfänger-Themen 8
I identifier und ) expected Java Basics - Anfänger-Themen 3
T class, interface or enum expected Java Basics - Anfänger-Themen 3
D "Illegal Start of Expression" und "; expected Java Basics - Anfänger-Themen 3
T .class expected Java Basics - Anfänger-Themen 5
NoXiD ; Expected Java Basics - Anfänger-Themen 2
P public enum ";"expected Java Basics - Anfänger-Themen 7
G <identifier> expected bei public void final Java Basics - Anfänger-Themen 3
D "identifier expected" und "cannot find symbol Java Basics - Anfänger-Themen 4
G Blue J - Fehlermeldung - identifier expected - illegal start Java Basics - Anfänger-Themen 6
zilti identifier expected bei Threads Java Basics - Anfänger-Themen 2
E <identifier> expected in List Java Basics - Anfänger-Themen 8
G sinnlos >>> "]" expected Java Basics - Anfänger-Themen 9
G "Identifier expected" Java Basics - Anfänger-Themen 9
S idetifier expected Java Basics - Anfänger-Themen 3
H <identifier> expected Java Basics - Anfänger-Themen 19
P Wieso kommt die Fehlermeldung ".class expected"? Java Basics - Anfänger-Themen 2
B Syntax error on token ";", { expected after this t Java Basics - Anfänger-Themen 7
G array list - identifier expected Java Basics - Anfänger-Themen 4
M Fehler Identifier Expected Java Basics - Anfänger-Themen 4
J [JavaKara] '.' expected import JavaKaraProgram Java Basics - Anfänger-Themen 2
K Array deklarieren und befüllen; "]" expected Java Basics - Anfänger-Themen 7
N Fehler <identifier> expected. Weiss nicht was falsch i Java Basics - Anfänger-Themen 2
K identifier expected | problem mit variable Java Basics - Anfänger-Themen 6
G identifier expected Java Basics - Anfänger-Themen 2
J Fehler identifier expected Java Basics - Anfänger-Themen 10
K 'class' or 'interface' expected Java Basics - Anfänger-Themen 3
G Fehlermeldung ']' expected, Objekterstellung in Laufzeit Java Basics - Anfänger-Themen 8
B Compiler Fehler "{" expected, kann doch nich sein? Java Basics - Anfänger-Themen 9
S syntax error variable declarator ID expected Java Basics - Anfänger-Themen 3
M Problem mit "<identifier> expected" in Actio Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben