Objektorientierung ?

Status
Nicht offen für weitere Antworten.

Dali

Mitglied
Hallo! Diese Aufgabe steht unter: http://www.ai.wu-wien.ac.at/~hahsler/JAVA/examples_open/book/


Hier mein code:
Code:
class Page{
	String content;
	
	Page(String content){
		this.content=content;
	}
	void write(String content){
		this.content=content;
	}
	String read(){
		return content;
	}
	void clear(){
		content=null;
	}
}

class Book{
	int i;
	String titel;
	Page[] p=new Page[100];
	
	Book(String titel, int i){
		this.i=i;
		this.titel=titel;
		p=new Page[i];
		}	
	
	String write(int i, String b){	
	 	return p[i-1].content=b;
	}
	String get_title(){
		return titel;
	}
	String read(int i){
		return p[i-1].content;
	}
	void clear(){
		titel=null;
		p=null;
	}
	
}
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("Titel: " + mybook.get_title());
    System.out.println(mybook.p.length);
    System.out.println("Seite 5: " + mybook.read(5));
    System.out.println("Seite 3: " + mybook.read(3));
    mybook.clear();
    System.out.println("Clearing book ...");
    System.out.println("Seite 3: " + mybook.read(3));
    System.out.println("Seite 40: " + mybook.read(40));
    
  }
}

wo habe ich nur den fehler, da sie Ausführung immer
Exception in thread "main" java.lang.NullPointerException
at Book.write(ABook.java:13)
at ABook.main(ABook.java:31) anzeigt!
Grüß!
 
Hi,
du setzt doch mit clear titel und p auf null, willst dann aber später nochmal per read(int) darauf zugreifen. In dieser Methode wird versucht den Array-Operator auf eine null-Referenz anzuwenden, was natürlich scheitert.
Also:
Code:
public String read(int i) {
    if (p==null || i<=p.length) return ""; // leere Seite eben ^^
    return p[i-1].content; // <- hier schönerweise eine getContent()-Methode in Page bauen!
}
 
Habe jetzt versucht, auch ohne clear Methode probiert und ohne clear nachfrage in main, geht aber weiter nicht. Compilieren gehts, jedoch dieselbe Antwort. Irgendwie funkt das nicht so.

Trotzdem Dankeschön!
 
genau! Dass war der Punkt! Thanks! :toll:

jetzt bin ich glücklich.

Code:
class Page{
	String content;
	
	Page(String text){
		write(text);	
	}
	Page(){}
	public void write(String text){
		content=text;
	}
	public String read(){
		return content;
	}
	public void clear(){
		content="";
	}
}
class Book{
	String title;
	Page [] p;
	
	Book(String name, int s){
		title=name;
		p= new Page[s];   // Array erzeugen
		for(int i=0;i<p.length;i++){   
			p[i]=new Page("new page");  //Page erzeugen
		}
	}
	Book(){}
	
	public void write(int i, String text){
		p[i-1].write(text);
	}
	
	public String read(int i){
		return p[i-1].read();
	}
	
	public void clear(){
	title="";
	for(int i=0;i<p.length;i++){
		p[i].clear();
	}
	}
	public String get_title(){
	return title;
	}

}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben