Hallo Leute, kennt sich hier jemand mit Java Programmieren aus?

5 Antworten

Jede Java-Klasse, die öffentlich ist, muss auch in einer eigenen .java-Datei stehen. Du hast hier zwei Klassen, nämlich "Lagerverwaltung" und "Main". Außerdem müssen (!) in Java Methodennamen mit einem Kleinbuchstaben beginnen. Du kannst also keine Methode "LagerTauschEinzel" deklarieren.


daCypher  28.11.2019, 14:24

Das mit dem Kleinbuchstaben stimmt so nicht. Es ist empfehlenswert, Methoden- und Variablennamen mit einem Kleinbuchstaben anzufangen und viele IDEs werden auch einen Hinweis anzeigen, wenn man davon abweicht, aber der Compiler hat kein Problem damit, wenn der Name mit einem Großbuchstaben anfängt. Das Programm lässt sich trotzdem kompilieren und starten.

0
gogogo  28.11.2019, 15:51
@daCypher

Dem kann ich nur zustimmen.

Du darfst auch griechische oder kyrillische Buchstaben sowie Währungszeichen als Variablennamen nehmen. Selbst Umlaute sind erlaubt.

Methodennamen sollten mit einem Kleinbuchstaben anfangen. Von einem müssen ist weit und breit nicht in der Sprache festgelegt.

0
ohwehohach  28.11.2019, 21:09
@daCypher

Dann ist es andersrum und Klassennamen müssen mit Großbuchstaben beginnen. Eines von beiden wird auf jeden Fall mit einem Compilerfehler quittiert.

0
regex9  29.11.2019, 18:08
@ohwehohach

Keines der beiden Elemente muss mit einem Großbuchstaben beginnen.

0
ohwehohach  01.12.2019, 23:11
@regex9

Doch. Klassennamen müssen mir Großbuchstaben beginnen. Zumindest hat der Compiler das früher so gefordert.

0
regex9  01.12.2019, 23:14
@ohwehohach

Dieses Beispielprogramm kann ich problemlos kompilieren und ausführen:

public class main {
  public static void main(String[] args) {
    System.out.println("Hello world");
  }
}

Probiere es bei dir aus. Einen weiteren Nachweis kann ich an dieser Stelle nur anhand eines Online-Compilers teilen: https://ideone.com/j2b2vv

Was du mit früher konkret meinst, weiß ich nicht.

0
ohwehohach  02.12.2019, 08:51
@regex9

Hm, jetzt habe ich es selber mal ausprobiert und Du hast Recht. Ich meine mich tatsächlich zu erinnern, dass es vor 15 Jahren oder so mal so war, dass Klassennamen mit Großbuchstaben und Methodennamen mit Kleinbuchstaben beginnen mussten (nicht nur sollten). Komisch.

Wir sind uns aber zumindest einig, dass der Dateiname der Java-Datei von der Groß-/Kleinschreibung her mit dem Klassennamen übereinstimmen muss? :-D

0
regex9  02.12.2019, 09:22
@ohwehohach

Daran kann ich mich nicht erinnern.

Ja, die Datei müsste dann main.java heißen.

0

Was steht denn da, wenn du mit der Maus auf die rot unterstrichene Zeile zeigst? (Normalerweise geht da ein Infofeld auf, wo der genaue Fehler drinsteht.)

Bei den unteren Fehlern kann ich mir vorstellen, dass die Klasse "Lager" nicht gefunden wird und der Codeeditor daher nicht weiß, welche Methoden und Eigenschaften die Klasse hat. Genauere Details kannst du aber auch da sehen, wenn du mit der Maus auf die fehlerhafte Zeile zeigst.

Der einzige offensichtliche Fehler, den ich finden kann ist das vergessene Semikolon bei "altesLager.lagerbestand.remove()"


MikaCansier 
Beitragsersteller
 28.11.2019, 14:17

hmm okay aber wie mache ich das dann mit der klasse lager?

0
daCypher  28.11.2019, 14:21
@MikaCansier

Die Klasse "Lager" muss im gleichen Package, wie die Java-Datei sein, wo du grade drin bist (oder halt im Package "Stunde7_2"). Guck doch erstmal, ob das überhaupt der Fehler ist. Also Maus drauf halten und schauen, was in der Fehlermeldung steht.

0

Wie heißt der Dateiname?

Lagerverwaltung.java oder lagerverwaltung.java?

Die Klasse Main auf gleicher Ebene wie die Class Lagerverwaltung ist unglücklich. Die würde ich in eine eigene Datei auslagern. Das gibt weniger Ärger.

Was sagt denn Compiler dazu? Da sollte stehen wo der Fehler liegt.

LG Knom

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler mit 10 Jahren Berufserfahrung 💾

MAUS DRAUF. Dann weißt du's.

Ich werde mal blind Raten, dass die Datei nicht "Lagerverwaltung.java" heißt.


MikaCansier 
Beitragsersteller
 28.11.2019, 14:09

class lagerverwaltung is never used

0
Orothred23  28.11.2019, 14:11
@MikaCansier

Jo, stimmt ja auch. Dagegen sehe ich nirgendwo die Klasse "Lager", die du die ganze Zeit versuchst zu verwenden....

0