Java Netbeans Frage

  • Ersteller Ersteller KekschenPaddy
  • Erstellt am Erstellt am
K

KekschenPaddy

Gast
Servus,
ich taste mich gerade an Java und Netbeans ran.
Folgenden Code besitze ich:


package Kapitel2;

class Film {
String titel;
String genre;
int bewertung;
void vorführen() {
System.out.println("Führe den Film vor");
}
}

public class FilmTestlauf {
public static void main (String[] args){
Film eins = new Film();
eins.titel = "Von der Krise verweht";
eins.genre = "Tragisch";
eins.bewertung = -2;

Film zwei = new Film();
zwei.titel = "Vier Deadlines und ein Todesfall";
zwei.genre = "Komödie";
zwei.bewertung = 5;
zwei.vorführen();

Film drei = new Film();
drei.titel = "Byte Club";
drei.genre = "Tragisch, aber letztendlich aufbauend";
drei.bewertung = 127;
}
}


Meine Datei nennt sich Film.class... Wie kann ich es hinbekommen, dass der Code funktioniert ,ich erhalte immer die Meldung:

class FilmTestlauf is public, should be declard in a file named filmTestlauf.java

Wenn ich jetzt eine Extra Datei mit dem Namen anlege, wie kan nich beide verknüpfen?

Gruß

Keks
 
das hat aber nichts mit netbeans zu tun sondern mit java.

ich frage mich wie sehr du dich mit java beschäftigt hast oder wieso du diese ziemlich eindeutige fehlermeldung nicht verstehst (englisch ist essenziell als entwickler)

entferne folgenden codeteil aus der datei Film.class (wieso hast du eine class datei? o.O)
Code:
public class FilmTestlauf {
public static void main (String[] args){
Film eins = new Film();
eins.titel = "Von der Krise verweht";
eins.genre = "Tragisch";
eins.bewertung = -2;

Film zwei = new Film();
zwei.titel = "Vier Deadlines und ein Todesfall";
zwei.genre = "Komödie";
zwei.bewertung = 5;
zwei.vorführen();

Film drei = new Film();
drei.titel = "Byte Club";
drei.genre = "Tragisch, aber letztendlich aufbauend";
drei.bewertung = 127;
}


erstelle eine neue Datei namens filmTestlauf.java
füge den eben entfernten code dort ein.
Hat etwas mit der Java Namenskonvention zu tun (wo klassen im Ürigen immer groß geschrieben werden sollten!)

diese datei fügst du anschließden in die datei ein, in der deine main Methode liegt, mittels import

P.S. ich würde keine umlaute als methoden / attribut namen verwenden
 
Wenn ich jetzt eine Extra Datei mit dem Namen anlege, wie kan nich beide verknüpfen?
Alles was im selben Package (= im selben Ordner) liegt, ist automatisch sichtbar. Da musst du nichts speziell importieren.

class FilmTestlauf is public, should be declard in a file named filmTestlauf.java
Beachte das Stichwort public! Eine private Klasse könntest du in der selben Datei bzw als innere Klasse anlegen. Das benötigt man aber wirklich nur sehr selten.

Und noch ein Tipp für NetBeans: ALt+Enter ist dein Freund. Das löst dir solche Probleme meistens automatisch auf, allerdings ist es auch nciht falsch zu wissen was man tut ;)
 
Was dir der Compiler mitteilen will:
Der Code einer Java-Klasse muss in einer Datei liegen, die so heißt wie die Klasse!

MeineKlasse -> MeineKlasse.java (-> kompiliert zu MeineKlasse.class)

1 Java-Datei sollte immer genau den Quellcode für 1 Klasse enthalten. Es geht mehr, aber es ist schlechter Stil.
 
Servus,
was die fehlermeldung bedeutet weiß ich. Momentan lerne ich mit einem Buch und bin noch sehr weit am Anfang... Mein Problem war nur wie ich zwei java.class verknüpfen kann und wie ich sie trennen muss.
 
Mein Problem war nur wie ich zwei java.class verknüpfen kann und wie ich sie trennen muss.

Was meinst du denn damit? Verknüpfen? Meinst du instantiieren von anderen Klassen in einem Objekt? Aber was hat das mit Trennen zutun?

Verwirrt sei. Also anders gefragt, was genau willst du machen?
 
ich denke da sind ein paar grundlegende Denkfehler die du machst:

1. .class Dateien erstellt der Compiler aus dem Sourcecode, nicht du
2. du erstellst .java Dateien (auch wenn sie dann Klassen enthalten ;) )
3. Eine .java sollte auch nur eine Klasse enthalten (Ausnahme private/inner Classes, aber als Anfänger erstmal unwichtig) und die Deklaration sollte dann immer public sein. Die .java Datei muss so heißen wie die public Klasse
4. Um Klassen zu verknüpfen etc. kommen objektorientierte Paradigmen etc. zum tragen. Es hat nichts damit zu tun, in welcher/welchen Datei(en) der Sourcecode steht, das ist vollkommen davon unabhängig.
 
Sers,
genau ich erstelle .Java (sorry).. Habe es momentan so:
Film.java enthält:
package Kapitel2;

class Film {
String titel;
String genre;
int bewertung;
void vorführen() {
System.out.println("Führe den Film vor");
}
}

Filmtestlauf.java enthält:
package Kapitel2;

public class FilmTestlauf {
public static void main (String[] args){
Film eins = new Film();
eins.titel = "Von der Krise verweht";
eins.genre = "Tragisch";
eins.bewertung = -2;

Film zwei = new Film();
zwei.titel = "Vier Deadlines und ein Todesfall";
zwei.genre = "Komödie";
zwei.bewertung = 5;
zwei.vorführen();

Film drei = new Film();
drei.titel = "Byte Club";
drei.genre = "Tragisch, aber letztendlich aufbauend";
drei.bewertung = 127;
}
}

Als Ausgabe kommt nur "Führe den Film vor", dennoch müsste er doch alle 3 Ausgaben tätigen, oder sehe ich das irgendwie verkehrt?

Gruß

Keks

Ps.: Danke schonmal für die Posts
 
Siehst du verkehrt. An der Stelle "zwei.vorführen();" wird die Instanz "zwei" vom Typ "Film" gebeten, ihre Methode "vorführen" aufzurufen. Dort steht: "Führe den Film vor".

Was sollte das Programm denn deiner Meinung nach ausgeben?
 
Zuletzt bearbeitet:
wie mein Vorposter sagt: die Methode vorführen macht genau eine statische Ausgabe, die immer gleich bleibt egal wie du das Objekt Film instanziierst (d.h. die anderen Variablen werden dort überhaupt nicht beachtet.) und du rufst die Methode vorführen genau einmal auf, ergo eine Ausgabe.

Es wäre sinnvoll in der Methode zumindest einen Teil der anderen Variablen mit auszugeben etc.
 
Wenn ich die Angaben in der Glaskugel richtig gedeutet habe willst du einfach nur das zu der jeweiligen Fiilminstanz der Titel (oder zuätzlich der restliche Kram) des entsprechenden Films ausgeben wird, richtig?

Code:
class Film {
 String titel;
 String genre;
 int bewertung;
 void vorführen() {
 System.out.println("Titel: "+titel+" Genre: "+genre+" Bewertung: "+bewertung);
 }
 }
 
Zuletzt bearbeitet:
KekschenPaddy schrieb:
Als Ausgabe kommt nur "Führe den Film vor", dennoch müsste er doch alle 3 Ausgaben tätigen, oder sehe ich das irgendwie verkehrt?

Du rufst die Methode ja auch nur 1mal auf, bei Film zwei. Deshalb erscheint der Text auch nur 1mal.

Möchtest du jetzt noch den Inhalt (Titel etc.) mit ausgeben, dann musst du die Variablen in den Ausgabe Text mit einbauen, dazu kannst du bei Helios co. etwas abgucken.

ps: Benutz bitte die Code-Tags, dann wird dein Code hier auch deutlich lesbarer :)
 
Zurück
Oben