Java, programmieren

Hallo,
es geht um folgende Aufgabe,bei der ich eure Hilfe benötige:

  1. a) Schreiben Sie eine Klasse Buch. Die Klasse Buch enthält die privaten
    Attribute autor, titel und genre vom Datentyp String sowie das private Attribut
    lfdNr (laufende Nummer) vom Datentyp Integer.
    b) Schreiben Sie für jedes der Attribute eine get-Methode. Die Klasse Buch
    enthält keine set-Methoden.
    c) Überschreiben Sie den Standardkonstruktor der Klasse Buch. Der „neue“
    Konstruktor bekommt die Attribute der Klasse als Parameter übergeben. Die
    Initialisierung der Attribute erfolgt innerhalb des Konstruktors.
    d) Schreiben Sie eine Klasse BuchApp. Erzeugen Sie in dieser Klasse ein
    Array, das Speicherplatz für drei Objekte vom Typ Buch bereitstellt.
    e) Verwenden Sie eine for-Schleife, um die Werte für die Attribute der
    einzelnen Objekte einzulesen, die Objekte zu erzeugen und dem Array
    zuzuordnen. Beachten Sie eine eventuelle Anpassung der Datentypen!
    Benutzen sie zur Erzeugung der Objekte den Konstruktor aus c).
    f) Verwenden Sie eine weitere for-Schleife, um die Werte der drei Objekte
    auszugeben.

Das Programm habe ich soweit schon geschrieben, bloß gibt der mir nichts aus, weil ich auch in der Klasse main nichts stehen habe.

package buch;

public class Buch {

private String autor, titel, genre;
private int lfdNr;

public Buch(String autor, String titel, String genre, int lfdNr) {
this.autor = autor;
this.titel = titel;
this.genre = genre;
this.lfdNr = lfdNr;

}

public String getAutor() {
return autor;
}

public String getTitel() {
return titel;
}

public String getGenre() {
return genre;
}

public int getldfNr() {
return lfdNr;
}
}

package buch;

public class BuchApp {

public void main(String args[]) {

Buch[] array = new Buch[3];
for (int x = 0; x

Deine main-Methode kann nicht funktionieren, weil es offiziell keine main-Methode ist! Deklariere sie als STATIC, und es läuft :wink:

Grüße, Keks

Hallo

Hallo,
es geht um folgende Aufgabe,bei der ich eure Hilfe benötige:

  1. a) Schreiben Sie eine Klasse Buch. Die Klasse Buch enthält
    die privaten
    Attribute autor, titel und genre vom Datentyp String sowie das
    private Attribut
    lfdNr (laufende Nummer) vom Datentyp Integer.
    b) Schreiben Sie für jedes der Attribute eine get-Methode. Die
    Klasse Buch
    enthält keine set-Methoden.
    c) Überschreiben Sie den Standardkonstruktor der Klasse Buch.
    Der „neue“
    Konstruktor bekommt die Attribute der Klasse als Parameter
    übergeben. Die
    Initialisierung der Attribute erfolgt innerhalb des
    Konstruktors.
    d) Schreiben Sie eine Klasse BuchApp. Erzeugen Sie in dieser
    Klasse ein
    Array, das Speicherplatz für drei Objekte vom Typ Buch
    bereitstellt.
    e) Verwenden Sie eine for-Schleife, um die Werte für die
    Attribute der
    einzelnen Objekte einzulesen, die Objekte zu erzeugen und dem
    Array
    zuzuordnen. Beachten Sie eine eventuelle Anpassung der
    Datentypen!
    Benutzen sie zur Erzeugung der Objekte den Konstruktor aus c).
    f) Verwenden Sie eine weitere for-Schleife, um die Werte der
    drei Objekte
    auszugeben.

Das Programm habe ich soweit schon geschrieben, bloß gibt der
mir nichts aus, weil ich auch in der Klasse main nichts stehen
habe.

package buch;

public class Buch {

private String autor, titel, genre;
private int lfdNr;

public Buch(String autor, String titel, String genre, int
lfdNr) {
this.autor = autor;
this.titel = titel;
this.genre = genre;
this.lfdNr = lfdNr;

}

public String getAutor() {
return autor;
}

public String getTitel() {
return titel;
}

public String getGenre() {
return genre;
}

public int getldfNr() {
return lfdNr;
}
}

package buch;

public class BuchApp {

public void main(String args[]) {

Hier fehlt das static, also public static void main… damit läuft das Programm bei mit einwandfrei

Buch[] array = new Buch[3];
for (int x = 0; x

Bei mir gehts dann immer noch nicht, weil ich habe insgesamt 3 Klassen.

  1. Schraube
    package schraube;

public class Schraube {

private String bezeichnung;
private int durchmesser, laenge;

public Schraube(String bezeichnung, int durchmesser, int laenge) {

this.bezeichnung = bezeichnung;
this.durchmesser = durchmesser;
this.laenge = laenge;

}

public String getBezeichung() {
return bezeichnung;
}

public int getDurchmesser() {
return durchmesser;
}

public int getLaenge() {
return laenge;
}
}

2.SchraubeApp
package schraube;

public class SchraubeApp {

public static void main(String args[]) {
Schraube[] array = new Schraube[3];
for (int x = 0; x

Was funktioniert denn nicht? und wozu hast du die 3. Klasse mit einer leeren Main-Methode?

Grüße Keks

Ach ja, für for-Schleifen benutzt man normalerweise den Variablennamen i, nicht x

Ich benutze öfter mal einen Name wie currentIndexOfMyOwnObjectClassInOrderedArrayOrList. :wink:

und was bedeutet das jetzt?

die main klasse wird doch bei jedem Projekt was man anlegt automatisch erstellt

und was bedeutet das jetzt?

Das man seine Variablennamen so vergeben soll, das man hinterher noch weiß, was man erreichen wollte…

Es gibt keine main Klasse, nur eine Methode. Und die wird von deiner IDE wahrscheinlich als kleine Tipperleichterung in eine Klasse eingefügt, wenn Du die entsprechende Einstellung vorgenommen hast.

Ich lasse mir z.B. keine main-Methoden generieren, weil ich die nur 1x brauche und dann lieber per Hand schreibe, wenn ich die Anwendungslogik fertig hab.

Achso, oder ging’s nur darum, dass die leer im Code vorhanden ist? Dann würd ich sie natürlich gleich wieder löschen. :wink:

Dann kommt diese Fehlermeldung

java.lang.NoClassDefFoundError: buch/Main
Caused by: java.lang.ClassNotFoundException: buch.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: buch.Main. Program will exit.
Exception in thread „main“ Java Result: 1

Ah, ok. Jetzt hab ich die Codeschnippsel zusammengebastelt. Du hast tatsächlich eine Klasse Main angelegt und darin eine Methode leere Methode main gehabt.

Was willst Du denn eigentlich mit deiner main erreichen? Soll das die Ausgabe der drei Objekte werden? Und musst du diese Ausgabe zwingend in einer neuen Klasse anlegen oder kannst du die main direkt in der Klasse BuchApp erstellen?

Ich hab jetzt das Projekt neu erstellt ohne eine mail Klasse zu erzeugen und jetzt hats endlich geklappt :smile:
wie könnte ich denn erreichen 3 verschiedene Bücher ausgeben zu können?

wie könnte ich denn erreichen 3 verschiedene Bücher ausgeben
zu können?

ok, ich tipp das jetzt einfach mal ohne Syntaxcheck:

public static void main(String... args) {
 // TODO einlesen der Werte von STDIN

 Buch[] regal = new Buch[] {
 new Buch(a1,b1,c1,d1),
 Buch(a2,b2,c2,d2),
 Buch(a3,b3,c3,d3)};

 for(Buch b : regal) {
 System.out.println(b);
 }
}

Dabei gehe ich davon aus, dass deine Klasse Buch die Methode toString() entsprechend überschrieben hat, so dass eine sinnvolle Ausgabe erzeugt wird.

Das Einlesen von a1-a3,b1-b3,c1-c3 und d1-d3 hast Du ja sicherlich schon gelöst.

Es gibt keine main Klasse sondern nur eine Methode

  1. Kapitel jeden Java Einführungsbuches.

Wer main nicht versteht sollte bei 0 anfangen

LG
Herbie