Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe?

SophiaK

Mitglied
Hallo Ihr lieben,

ich hatte davor "Hallo Welt" eingetippt und danach etwas anderes - es kommt aber immer noch "Hallo Welt". Wie kann man denn das ändern?

Danke
 

Anhänge

  • Bildschirmfoto 2021-04-24 um 18.51.07.png
    Bildschirmfoto 2021-04-24 um 18.51.07.png
    195,2 KB · Aufrufe: 55
Die Entwicklungsumgebung meckert Deine Klasse ja an. Vermutlich wurde daher der letzte Stand, der sich übersetzen ließ, ausgeführt.

Also Fehler beheben und nur Ausführen, wenn es sich auch richtig übersetzen liess.
 
Sorry, aber im Bildschirmfoto ist ganz klar zu sehen, dass die Datei "Java läuftj.java" enthält:

Java:
public class j {

Damit ist der Klassenname "j" und der Dateiname "Java läuftj.java".
 
Da wäre ich mir nicht so sicher. Was sieht der Compiler denn zuerst, den Dateinamen oder was in der Datei steht? 🤭
Es geht nicht um das, was wann wie gesehen wird sondern um korrekte Bezeichner. Das eine ist ein Dateiname und das andere der Name der Klasse.

Wenn man das dann ganz genau nehmen will, dann schaut man sich nur die Fehlermeldung an:
error: class XXX is public, should be declared in a file named XXX.java

Da es nur ein Fehler ist, wenn die class "public" ist, dann mach einfach eine java Datei mit irgend einem Namen und eine class, die nicht public ist, also z.B.:
Java:
class Test {
  public static void main(String args[]) {
    System.out.println("Test");
  }
}

Die Datei kannst Du dann übersetzen. Dann wird die Datei mit welchem Namen auch immer gelesen und die Klasse Test erzeugt. Damit entsteht dann ein Test.class
Und das kannst Du dann mit java Test ausführen. Also z.B. mit der Datei "a b.java" (also auch mit Leerzeichen - in Dateinamen ist dies erlaubt nur eben nicht in Bezeichnern):
Java:
D:\Projects\test>javac "a b.java"

D:\Projects\test>dir
 Datenträger in Laufwerk D: ist Daten
 Volumeseriennummer: C0E1-AE7A

 Verzeichnis von D:\Projects\test

24.04.2021  19:32    <DIR>          .
24.04.2021  19:32    <DIR>          ..
24.04.2021  19:32                97 a b.java
24.04.2021  19:32               398 Test.class
               2 Datei(en),            495 Bytes
               2 Verzeichnis(se), 219.345.154.048 Bytes frei

D:\Projects\test>java Test
Test

D:\Projects\test>

Aber alles, was ich nur etwas verbessern wollte, war eben der verwendete Begriff. Und da hat man eben den Bezeichner, der den Namen der Klasse angibt und den Dateinamen.
 
Eine Klasse sollte so heißen wie die beinhaltende Datei. Leerzeichen sind im Klassennamen nicht erlaubt. Ergo ist der Dateiname falsch. Daran gibt es nicht viel zu rütteln.
 
Eine Klasse sollte so heißen wie die beinhaltende Datei. Leerzeichen sind im Klassennamen nicht erlaubt. Ergo ist der Dateiname falsch. Daran gibt es nicht viel zu rütteln.
Sorry, aber daran habe ich nie gerüttelt (was eine public class angeht). Ich habe Dich nur darauf hingewiesen, dass die Klasse im Namen kein Leerzeichen hat - denn die Klasse auf dem Bildschirmfoto heißt "j".

Und Deine Aussage ist schlicht wieder ungenau - denn der Dateiname wäre z.B. technisch auch ok, wenn das public vor class gelöscht würde. (Aus Clean Code Gründen sollte man es nicht machen, klar. Da bin ich ganz bei Dir.)

Falls es Dir nicht aufgefallen sein sollte: Ich habe Dir nicht wirklich widersprochen sondern lediglich darauf hingewiesen, dass die Aussage von Dir - obwohl sie durchaus das Richtige meinte - technisch nicht ganz korrekt ist. Dateiname und Name der Klasse sind nun einmal zwei Paar Schuhe. Aber die Diskussion müssen wir nicht weiter führen - denn ich sehe gerade nicht, dass es noch zu irgend etwas sinnvollem führen würde ...
 
Was sieht der Compiler denn zuerst, den Dateinamen oder was in der Datei steht?
Den Dateinamen.

Man kann ja durchaus mehrere Klassen in eine Datei packen. Sollte man dann noch eine Klasse (Klassenname) versehentlich in unterschiedlichen Dateien deklariert haben, dann kann die Reihefolge dieser Dateien, im Aufruf von javac, u. U. auch zu einem unterschiedlichen Ergebnis führen. Deshalb sollte man das auch tunlichst unterlassen.

Eine Klasse sollte so heißen wie die beinhaltende Datei. Leerzeichen sind im Klassennamen nicht erlaubt. Ergo ist der Dateiname falsch.
"Sollte" hat nicht die selbe Bedeutung wie "muss". Ergo ist deine Schlussfolgerung falsch. 😉

Aber grundsätzlich hast du natürlich Recht: Die Datei sollte heißen, wie die Klasse und es sollte nur eine Top-Level-Klasse in der Datei deklariert werden.
 
Zuletzt bearbeitet:
Nein, ich habe Aussagen versucht auch im Detail richtig zu stellen aber selbst @temi scheinst du nicht verstehen zu wollen.

Du wirst das richtige vorschlagen, aber Deine Aussagen sind so schlicht falsch. Aber ich werde das nicht weiter diskutieren, denn selbst beim IntelliJ Community hast du klare Fakten schlicht geleugnet.
 
Wobei ich unsicher bin, dass es sich hier um Tobias handelt. Tobias hatte zwar Probleme im Textverständnis aber von der Terminologie war er doch eigentlich so, dass er ein halbwegs vernünftiges Verständnis hatte. Und so grobe Schnitzer a.la. "IntelliJ Community ist nicht kostelos" (was von Moderatoren gelöscht wurde, danke dafür!) waren doch eigentlich nicht seine Art und Weise ....

Aber ja, vielleicht überschätze ich Tobias einfach - die Art und Weise passt auf jeden Fall zu ihm. Aber darüber nachzudenken macht wenig Sinn weil es einfach zu nichts führt. Ob Tobias nun hinter dem Account steckt oder nicht: Spätestens in einer Woche hat er eh wieder einen neuen Account ...
 

Zurück
Oben