Java, programmieren

Hallo, ich habe ein paar Probleme beim Lösen folgender Aufgabe, ich hoffe ihr könnt mir helfen:

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.

Ich hab so angefangen, jedoch bekomme ich mehrere Fehlermeldungen ‚missing method body‘ und oben bei der Deklaration steht ‚illegal start of expression‘

public class Main {

public static void main(String[] args) {

private String autor, titel, genre;
int lfdNr;

String getAutor();
return autor;
String getTitel();
return titel;
String getGenre();
return genre;
int getLfdNr();
return lfdNr;
}
}

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.

Klar, dein Code ist absoluter Quatsch, deshalb gehts nicht.

Ersten:
Die Aufgabe ist:

a) Schreiben Sie eine Klasse Buch…

Na dann schreibe doch eine Klasse Buch

und in deiner Main-Methode steht:

public void main(String[] args)
{
 Buch buch = new Buch();
 System.out.println(buch.getTitle());
}

Was Attribute sind und Get/Set-Methoden
lese dir das mal durch
http://openbook.galileocomputing.de/javainsel8/javai…

Ja das habe ich soweit, danke :smile:
jetzt muss ich noch folgende Aufgabe bearbeiten:

Ü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.

Ist das soweit richtig?

public class buch {

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

public buch(String autor, String titel, String genre) {
super();
}

public String getAutor() {
return autor;
}

public String getTitel() {
return titel;
}

public String getGenre() {
return genre;
}

public int getldfNr() {
return lfdNr;
}
}

Hallo

Ist das soweit richtig?

Nein. Wie es richtig geht steht hier:

http://openbook.galileocomputing.de/javainsel8/javai…

Außerdem ist der erste Buchstabe des Klassennamens immer ein Großbuchstabe.

Grüße

Michael

Ist das jetzt richtig?

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;
}
}

Teste doch einfach mal selber ob das Programm bis jetzt macht was es soll. Erzeug doch mal mit deinem Konstruktor ein Objekt der Klasse und schau ob du dann den richtigen Autor, Titel etc ausgeben kannst.
Klassennamen schreibt man übrigens immernoch groß :wink:

Das Problem ist, ich weiß noch nicht mal, wie man sowas macht.
Also mit einem Konstruktor ein Objekt der Klasse erzeugen.
Könnten Sie mir eventuell dabei weiterhelfen?

Ja kann ich.

Wenn du dann den Namen der Klasse groß geschrieben hast sieht das z.B. so aus:

Buch buch = new Buch(„John Grisham“, „Die Jury“, „Thriller“, 1234);

Auf die Methoden kannst du mit dem Punktoperator zugreifen:

System.out.println(buch.getAutor);

Wenn Du Dich jetzt nicht mit Klassen, Objekten, Variablen, Werten, Deklarationen und Zuweisungen beschäftigst, wirst Du demnächst auf sehr große Probleme stossen.

Ich empfehle deshalb nochmal http://openbook.galileocomputing.de/javainsel8/javai… und Du solltest Dir die ersten Kapitel wirklich in Ruhe durchlesen und alles ausprobieren.

Danke, ich les mir schon neben dem Programmieren die Kapitel dort durch, bloß ist das am Anfang schwer, diese Theorie auf eine vorgegebene Aufgabe anzuwenden. Daher frag ich dann auch hier in dem Forum, wenn ich nicht mehr weiter weiß.

Naja, es ist nur schwierig, die jetzt komplexeren Aufgaben zu lösen, wenn Du die Sprachmittel nicht zur Verfügung hast. Wenn Du ein Objekt der Klasse Buch anlegen sollst, musst Du schliesslich wissen, wie das geht. Die Aufgaben sollen dich da hin führen (so lesen sie sich jedenfalls für mich), aber ohne die Theorie wirst Du nicht weiter kommen.

Dieser Punkt ist wohl etwas trocken für die meisten Anfänger, aber ich denke, Du fährst besser, wenn Du Dich erstmal mit Objekten und Klassen und Konstruktoren beschäftigst und bei Verständnisproblemen hier nachfragst, als jetzt in jede Aufgabe reinzugehen, hier eine passable Antwort abzugreifen und hinterher nichts zu verstehen.

Eine Prüfung besteht man so höchstens mit Glück. Und mit echter Softwareentwicklung hast Du dann hoffentlich hinterher nichts zu tun.

Also ich habe jetzt folgendes in die main Methode geschrieben und trotzdem bekomme ich Fehlermeldungen:

public class Main {

public static void main(String[] args) {
Buch buch = new Buch(„John Grisham“, „Die Jury“, „Thriller“, 1234);
System.out.println(buch.getAutor());
}
}

Das sind die Fehler: Exception in thread „main“ java.lang.NoClassDefFoundError: buch/Buch
at buch.Main.main(Main.java:6)
Caused by: java.lang.ClassNotFoundException: buch.Buch
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)
… 1 more

Hast du denn den Klassennamen mittlerweile groß geschrieben?
Wie hast du denn die Klasse umbenannt? Einfach im Code den Namen ausgebessert?

nein links bei den Projekten hab ich die unbenannt, der projektname ist jedoch noch klein geschrieben. liegt das daran?

Nein das dürfte nichts ausmachen. Irgendwas mit deiner Klasse Buch stimmt auf jeden Fall nicht. Ist sie im gleichen package wie die Main Klasse?
Kopier mal den kompletten Code von der Klasse Buch, lösche sie aus deinem Projekt und lege sie neu an. Dann den Code wieder rein kopieren.

okay jetzt hat’s geklappt :smile:
ich wollte jetzt mal ausprobieren, ob das klappt, dass der mir den buchtitel mit dem genre und dem Autor wiedergibt, klappt aber nicht so ganz.

public class Main {

public static void main(String[] args) {
Buch buch = new Buch(„John Grisham“, „Die Jury“, „Thriller“, 1234);
System.out.println(""+buch);
}
}

eigentlich müsste das doch so auch gehen oder nur mit hilfe von get.?

Wenn du alles ausgeben willst musst du alle get-Methoden verwenden. So wie du das gemacht hast funktioniert das nicht.

Okay, dann weiß ich jetzt bescheid :smile:
Las nächstes muss ich folgendes machen:

Schreiben Sie eine Klasse BuchApp. Erzeugen Sie in dieser Klasse ein
Array, das Speicherplatz für drei Objekte vom Typ Buch bereitstellt.
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

Also das Array hab ich hoffentlich richtig angelegt, bloß weiß ich nicht wie ich bei der for-Schleife vorgehen muss und ob diese in der main-Methode stehen muss oder woanders.

public class BuchApp {

String [] array = new String [3];

}

Also das Array hab ich hoffentlich richtig angelegt

Nee hast du nicht denn du sollst

Erzeugen Sie in dieser Klasse ein Array, das Speicherplatz für drei :open_mouth:bjekte vom Typ Buch bereitstellt.

Du hast ein Array für den Typ String erstellt.

bloß weiß ich nicht wie ich bei der for-Schleife vorgehen muss und ob

du sollst mit einer for-Schleife alle Werte einlesen und ins Array schreiben.

hier Beispiele für Varianten der for-Schleifen

//allgemeiner Aufbau
for ( Zählvariable mit Anfangswert; Bedingung; Schrittweite)
{
 // Anweisung, die wiederholt werden soll
}
 
// hochzählen in 1er-Schritten
for ( int zählvariable = Anfangswert; zählvariable Endwert; zählvariable-- )
{
 // Anweisung, die wiederholt werden soll
}

Die Anweisungen die wiederholt werden sollen

  1. sind das erzeugen eines Objektes Buch
  2. das mit Werte fühlen, wenn es nicht bei der Erzeugung gemacht wurde
  3. in das Array schreiben.

…for-Schleife vorgehen muss und ob diese in der main-Methode stehen muss oder woanders.

Die Frage kannst du dir sehr einfach beantworten, das hatten wir zusammen in einen anderen Thema ausführlich besprochen. Deine Antwort war: „habe ich verstanden“. Also kennst du doch die Antwort

Ja ich habe das jetzt so gemacht:

public class BuchApp {

Buch[] array = new Buch[3];

for(int x=0; x