Klassen implementieren

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo

Ich soll die Klasse Page implementieren. Wie muss diese aussehen, damit folgende Klasse funktioniert:
Code:
class OnePage {
  public static void main (String[] arg) {  
    String text = "Das ist ein Text!";
    Page p1 = new Page();


    p1.write(text);
    System.out.println(p1.read());

    p1.clear();
  }
}

Ich schaffs einfach nicht!

Danke
 
S

stev.glasow

Gast
public class OnePage

und die Datei muss OnePage.java heißen, sonst wüsste ich nix.
 
G

Guest

Gast
Ich glaube die Klasse muss "Page" heißen!

Ich bin ich schon soweit, dass das Programm läuft, jedoch lautet die Ausgabe "Page@10b62c9". Es sollte aber stehen"Das ist ein Text"

Mein geschriebener Code ist:


Code:
class Page
{
	String X;
	
	public void write(String X)
	{this.X = X;
	}
}
 
G

Guest

Gast
wo ist read ?

Ich wollt nur mal das mit dem write zusammenbringen und habs folgendermaßen versucht:

Code:
class SomePages {
  public static void main (String[] arg) 
   {  
    String text = "Das ist ein Text!";
    Page p1 = new Page();
  
    p1.write(text);
    System.out.println(p1);
    }
}


class Page
{
	String x;

	public void write(String x)
	{
         this.x = x;
	}
}

Damit bekomme ich dann die Ausgabe "Page@10b62c9".

Was meinst du mit getter?
 

mic_checker

Top Contributor
Du sollst nicht direkt p1 ausgeben, sondern read, was wahrscheinlich einfach dein x zurückgibt.

Schreib einfach noch deine read Methode, die dient dann als getter. dein write dient als set Methode.

In der FAQ steht auch warum du es private machen solltest....
 

Anselmus

Bekanntes Mitglied
Anonymous hat gesagt.:
Damit bekomme ich dann die Ausgabe "Page@10b62c9".

das kommt, weil du versucht das objekt auf die kommandozeile zu schreiben:

Code:
System.out.println(p1);

aber du willst ja nicht das ganze objekt ausgeben, sondern nur den text aus deinem onjekt
 

mic_checker

Top Contributor
kannst auch noch die toString() Methode überschreiben, allerdings ist das wohl der Sinn u. Zweck von deinem read den Wert entsprechend zurück zu geben......diesen dann im System.out.println(..) auszugeben.
 
G

Gast2

Gast
als kleine Hilfe:
Code:
class Page {
    
    private String text;
    
    // Konstruktor 
    public Page() {}
    
    // Methoden
    
    //hier eine setter-Methode, die SETzt die Variable text auf den String
    //den du übergibst!
    public void write(String text) {
        //selber überlegen, was man hier machen muss
    }
    
    //hier eine getter-Methode, die gibt dir die Variable text aus!
    public String read() {
        // hier muss ein Befehl rein, der dir die Variable text zurückgibt...
    }
    
    //mit dieser Methode wird die Variable text wieder gelöscht
    public void clear() {
        this.text = "";
    }   
}
 
G

Guest

Gast
Es funktioniert, danke schon mal!

Ich muss jetzt noch die Instanz p2 erstellen, wie geht das?

Code:
class SomePages {
  public static void main (String[] arg) {  
    String text = "Das ist ein Text!";
    Page p1 = new Page();
    Page p2 = new Page("Ich bin die 2. Seite!");
    p1.write(text);
    System.out.println(p1.read());
    System.out.println(p2.read());
    p1.clear();
 	
  }
}
Mein bisheriger Code:
Code:
class Page
{
	String x;
	public String read ()
	{
	return x;
		
	}
	public void write(String x)
	{
	this.x = x;
	}
	public void clear()
	{
	this.x="";	
	}
}

Ich bekomme die Fehlermeldung
.....\SomePages.java:5: cannot find symbol

symbol : constructor Page(java.lang.String)

location: class Page

Page p2 = new Page("Ich bin die 2. Seite!");

^
 
G

Gast2

Gast
Nun musst du deine Klasse Page um einen Konstruktor erweitern, dem man einen String übergeben kann, und der diesen String in deine Variable x hineinschreibt
 
G

Guest

Gast
Gast2 hat gesagt.:
Nun musst du deine Klasse Page um einen Konstruktor erweitern, dem man einen String übergeben kann, und der diesen String in deine Variable x hineinschreibt

Was ist an meinem Konstruktor falsch?

void Page (String x)
{this.x = x;}
 
G

Gast

Gast
das schlüsselwort void wird bei konstruktoren nicht verwendet, versuchs mal mit Public
 

kritz

Mitglied
Ich muss noch ein Buch erstellen, worin ich in jede Seite etwas anderes Schreiben kann. Bei meinem Programm werden jedoch die Seiten überschrieben:

Code:
class ABook 
{
    public static void main (String[] arg) {
    Book mybook= new Book("Mein Tagebuch",20);

    mybook.write(3,"Hallo 3. Seite!");
    mybook.write(5,"Ich bin Seite Nr.5");
    
    System.out.println("Seite 5: " + mybook.read(5));
    System.out.println("Seite 3: " + mybook.read(3));
 }}

class Book
{
	private String x;
	private int anzahlSeiten;
	
	public Book (String x,int anzahlSeiten) //Konstruktor
	{this.x = x;
	this.anzahlSeiten = anzahlSeiten;} 
		
	public String read (int anzahlSeiten)
	{this.anzahlSeiten = anzahlSeiten;
	return x;}
	
	public void write(int anzahlSeiten, String x)
	{this.anzahlSeiten = anzahlSeiten;
	this.x = x;}
}

Die Ausgabe sollte folgendermaßen aus:
Seite 5: Ich bin Seite Nr.5
Seite 3: Ich bin Seite Nr.5

Die Ausgabe sollte aber folgendermaßen sein:

Seite 5: Ich bin Seite Nr.5
Seite 3: Ich bin Seite Nr.3
 

Anselmus

Bekanntes Mitglied
ist ja klar jedesmal wenn du mybook.write() aufrufst, wird der string überschieben...

da brauchst du wahrschenlich auch ne liste in deinem buch, in der jede einzelne seite drinstehn

etwas so:
Code:
public class Book{

List myBook = new ArrayList();
...
public void write(int i, String text){
...
myBook.add(i-1,text);
...}
...
}
 

KSG9|sebastian

Top Contributor
denk doch mal nach was passiert wenn du Book#write aufrufst:

Der alte wert wird überschrieben.

Das sollte wenn dann so aussehen:

Abook hat nen Konstruktror dem der Name des Buches und die Anzahl der Seiten übergeben wirt
Abook hat ne Variable seiten vom Typ Page (als Array)
Im Konstruktor wird ein array mit der übergebenen länge erzeugt
Abook hat noch ne Methode addPage(Page p), ne Methode readPage(int index) und mehr brauchst du glaub ich net
 

kritz

Mitglied
also ich versteh irgendwie schon was ihr meint aber ich hab zurzeit keinen schimmer wie ich anfangen bzw. wie ich das umsetzen soll

wie erzeuge ich zB in der klasse Book einen Array, der die Länge des Arrays von der Klasse ABook erhält?

Ich weiß schon wie man arrays usw erzeugt, aber wie man das mit Hilfe von mehrere klassen macht, das versteh ich noch nicht!
 

KSG9|sebastian

Top Contributor
da du dich anscheinend bemühst post ich mal ein bisschen code..
ungefähr so:


Code:
//Page.java
public class Page{
   private String text;
   public Page(){
     this.text = "";
   }
   public Page(String text){
     this.text = text;
   }

   public void write(String text){
      this.text = text;
   } 
   public String read(){
     return text;
   }
   public void clear(){
      text = "";
   }
}

Soweit warst du ja schon..jetzt die Klasse Book

Code:
public class Book{
   //Das hier ist ein Array für die Seiten
   private Page[] seiten;
   private String bookTitle;
   private int seitenAnzahl;
   public Book(final int seitenAnzahl, String bookTitle){
      //Jetzt das Array erzeugen
      seiten = new Page[seitenAnzahl];
      this.seitenAnzahl = seitenAnzahl;
      this.bookTitle = bookTitle;
   }
   public void write(int seite, String text){
      if(seite >= 0 && seite < anzahlSeiten){
         seiten[seite] = new Page(text);
     }
   }
   public String read(int seite){
      if(seite >= 0 && seite < anzahlSeiten)
         return seiten[seite].read();
      return "Seite nicht vorhanden";
   }
}
 

KSG9|sebastian

Top Contributor
andere möglichkeit (ohne die Klasse Page):

Code:
public class Book{ 
   //Das hier ist ein Array für die Seiten 
   private String[] seiten; 
   private String bookTitle; 
   private int seitenAnzahl; 
   public Book(final int seitenAnzahl, String bookTitle){ 
      //Jetzt das Array erzeugen 
      seiten = new String[seitenAnzahl]; 
      this.seitenAnzahl = seitenAnzahl; 
      this.bookTitle = bookTitle; 
   } 
   public void write(int seite, String text){ 
      if(seite >= 0 && seite < anzahlSeiten){ 
         seiten[seite] = text; 
     } 
   } 
   public String read(int seite){ 
      if(seite >= 0 && seite < anzahlSeiten) 
         return seiten[seite];
      return "Seite nicht vorhanden"; 
   } 
}
 

kritz

Mitglied
Vielen Dank, daran wäre ich wahrscheinlich ewig gesessen:

Ich möchte jetzt noch alle Seiten wieder mit

mybook.clear();

löschen. Ich habe dafür eine for Schleife gemacht, die von 1 bis zu anzahlSeiten durchzählt und jedes mal

text = ""

zurückgibt. Warum geht das nicht?

Code:
public void clear (){
		for (int i = 1;i <= seitenAnzahl;i++){
			text = "";}}
 

Paule

Aktives Mitglied
Hi,

du musst noch die entsprechenden Seiten angeben, die gelöscht werden sollen. Also ungefähr so: (btw Arrays beginnen an der Stelle 0 nicht bei 1)

Code:
public void clear (){
      for (int i = 0;i < seitenAnzahl;i++){
         seiten[i].text = "";}}

Hoffe ich konnte dir helfen.

Gruß Paule!!!
 

kritz

Mitglied
Vielen Dank für deine bisherige Hilfe.

Wenn ich jetzt die Seiten gelöscht habe, möchte ich mir natürlich ansehen, ob sie wirklich leer sind

Code:
    mybook.clear();
    System.out.println("Clearing book ...");
    System.out.println("Seite 3: " + mybook.read(3));
    System.out.println("Seite 40: " + mybook.read(40));

Dann bekomme ich die Fehlermeldeun:

Exception in thread "main" java.lang.NullPointerException
at Book.clear(Book.java:29)
at ABook.main(ABook.java:11)

Ich hab schon versucht "leer" hineinzuschreiben

Code:
      public void clear (){
      for (int i = 0;i < seitenAnzahl;i++){
      seiten[i].text = "leer";}}
das bringt aber auch nichts. was ist daran noch falsch?
 

KSG9|sebastian

Top Contributor
Code:
public class Book{ 
   //Das hier ist ein Array für die Seiten 
   private Page[] seiten; 
   private String bookTitle; 
   private int seitenAnzahl; 
   public Book(final int seitenAnzahl, String bookTitle){ 
      //Jetzt das Array erzeugen 
      seiten = new Page[seitenAnzahl]; 
      this.seitenAnzahl = seitenAnzahl; 
      this.bookTitle = bookTitle; 
   } 
   public void write(int seite, String text){ 
      if(seite >= 0 && seite < anzahlSeiten){ 
         seiten[seite] = new Page(text); 
     } 
   } 
   public String read(int seite){ 
      if(seite >= 0 && seite < anzahlSeiten && seiten[i] != null) 
         return seiten[seite].read(); 
      return "Seite nicht vorhanden"; 
   } 
   public void clear(){
      for(int i=0;i<anzahlSeiten;i++)
         if(seiten != null && seiten[i] != null)
           seiten[i].clear();
   }
}
 

kritz

Mitglied
Hat das deshalb nicht funktioniert, weil mein Programm versucht hätte in alle Seiten "leer" hinzushreiben, auch in jene (zB Seite4) die noch gar nicht erstellt wurden?

Du warst mir echt eine RIESEN hilfe!!
 

mic_checker

Top Contributor
Das hat nicht an dem Wort "leer" gelegen, schau dir den Code von KSG9 mal an und vergleiche. Er stellt noch sicher das er darauf zugreifen kann, also ob es ungleich null ist.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
E Klassen implementieren Java Basics - Anfänger-Themen 94
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
K Klassen implementieren Java Basics - Anfänger-Themen 7
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
B Liste aller Klassen die ein Interface implementieren. Java Basics - Anfänger-Themen 7
G Klassen finden die gegebenes Interface implementieren. Java Basics - Anfänger-Themen 11
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
A Generischen Klassen Java Basics - Anfänger-Themen 8
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
J Klassen Problem Java Basics - Anfänger-Themen 8
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
I Klassen als Datentyp nutzen? Java Basics - Anfänger-Themen 11
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Klassen objektorientiert aufteilen Java Basics - Anfänger-Themen 6
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
F Klassen und Pakete Projektübergreifend (Eclipse) Java Basics - Anfänger-Themen 6
V_Fynn03 Klassen Überweisungen tätigen und einzahlen mit 2 Klassen Java Basics - Anfänger-Themen 1
W Abarbeitungsreihenfolge Anonyme Klassen Java Basics - Anfänger-Themen 2
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
C Methoden/Klassen Übergabewerte Java Basics - Anfänger-Themen 8
C Java Klassen/Methoden/Übergabeparameter Java Basics - Anfänger-Themen 4
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
L Wie teilt man ein Programm in vernünftige Klassen ein? Java Basics - Anfänger-Themen 10
T Klassen Denkfehler im Klassen "dynamisch" instanzieren? Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
A Methode, Klassen Java Basics - Anfänger-Themen 3
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
J Zwei Klassen die sich gegenseitig referenzieren - Bad practice? Java Basics - Anfänger-Themen 4
G Klassen und Objekte Java Basics - Anfänger-Themen 2
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
D Klassen ausgeben Java Basics - Anfänger-Themen 2
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
neerual Klassen Wie rufe ich Klassen, die andere Klassen extenden in einer Test Unit auf? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben