Author in Vector

Alina_C

Mitglied
Bei folgenden Testprogramm habe ich ein Problem.
Die Ausgabe sieht folgendermaßen aus:
Code:
null0
Code:
ID: 2 Title: title2 Author: [author2.1, author2.2, author2.3, author2.4]
Code:
ID: 3 Title: title3 Author: [author3.1, author3.2, author3.3]

Dabei sollte die erste Zeile so aussehen:
Code:
ID: 1Title: title1 Author: [author1.1, author1.2, author1.3]


Java:
package b1.a2test;

import java.util.Vector;

public class Book {
	//classvar
	private long id;
	private String title;
	private Vector <String> authors;
	private String publisher;
	private Integer year;
	private String isbn;
	
	//constructor
	public Book(long id){
		this.id = id;
		this.authors = new Vector <String> ();
		this.publisher = "";
		this.isbn = "";
		this.year = null;
	}
	
	public long getId(){
		return this.id;
	}
	
	public void setTitle(String title){
		this.title = title;
	}
	
	public String getTitle(){
		return this.title;
	}
	
	public void addAuthors(String author){
		authors.add(author);
	}
	
	public Vector <String> getAuthors(){
		return this.authors;
	}
	
	public void setPublisher(String publisher){
		this.publisher = publisher;
	}
	
	public String getPublisher(){
		return this.publisher;
	}
	
	public void setYear(int year){
		this.year = year;
	}
	
	public int getYear(){
		return this.year;
	}
	
	public void setIsbn(String isbn){
		this.isbn = isbn;
	}
	
	public String getIsbn(){
		return this.isbn;
	}
}


Java:
package b1.a2test;
import java.util.Vector;

public class BookAdmin {
	Vector <Book> books = new Vector <Book> ();
	
	public void addBook(Book tmp){
		books.add(tmp);
	}
	
	public String getBook(int id){
		String s = "null"+id;
//		System.out.println(books.get(0).getId());
		for(int i = 0; i < books.size()-1; i++){
			if (id == books.get(i).getId()){
				s = "ID: "+books.get(id).getId()+" Title: "+books.get(id).getTitle()+" Author: "
						+books.get(id).getAuthors();
			}
		}
		return s;
	}
}


Java:
package b1.a2test;
import java.util.Vector;

public class Main {
	public static void main (String[] args){
		Book book1 = new Book(1);
		book1.setIsbn("isbn1");
		book1.setPublisher("publisher1");
		book1.setTitle("title1");
		book1.setYear(2001);
		book1.addAuthors("author1.1");
		book1.addAuthors("author1.2");
		book1.addAuthors("author1.3");
		
//		System.out.println("ID: "+book1.getId()+" Title: "+book1.getTitle()+" Author: "
//				+book1.getAuthors());
		
		Book book2 = new Book(2);
		book2.setIsbn("isbn2");
		book2.setPublisher("publisher2");
		book2.setTitle("title2");
		book2.setYear(2002);
		book2.addAuthors("author2.1");
		book2.addAuthors("author2.2");
		book2.addAuthors("author2.3");
		book2.addAuthors("author2.4");
		
//		System.out.println("ID: "+book2.getId()+" Title: "+book2.getTitle()+" Author: "
//				+book2.getAuthors());
		
		Book book3 = new Book(3);
		book3.setIsbn("isbn3");
		book3.setPublisher("publisher3");
		book3.setTitle("title3");
		book3.setYear(2003);
		book3.addAuthors("author3.1");
		book3.addAuthors("author3.2");
		book3.addAuthors("author3.3");
		
//		System.out.println("ID: "+book3.getId()+" Title: "+book3.getTitle()+" Author: "
//				+book3.getAuthors());
		
		BookAdmin ba1 = new BookAdmin();
		ba1.addBook(book1);
		ba1.addBook(book2);
		ba1.addBook(book3);
		System.out.println(ba1.getBook(0));
		System.out.println(ba1.getBook(1));
		System.out.println(ba1.getBook(2));
	}
}


Was mache ich bitte falsch? Ich komm einfach nicht drauf :bahnhof:
(Wenn möglich, bitte nicht direkt die Lösung sagen, sondern nur Hinweise geben)
 
Zuletzt bearbeitet von einem Moderator:

Final_Striker

Top Contributor
Du hast aber kein Buch mir der Id 0, weil du ja mit 1 anfängst. Deshalb bekommst du [c]null+id[/c] ->
Code:
String s = "null"+id;
zurück.
 

Alina_C

Mitglied
Das Problem war eine "out of range"-Exception.
Wenn ich die for Schleife ändere (in
Code:
for(int i = 0; i < books.size(); i++){
), bekomme ich diesen Fehler wieder.

Müssen in dem Fall die Bücher mit der ID 0 beginnen? Aber die ID sollte dem Programm doch eigentlich egal sein.
 

Alina_C

Mitglied
Weil du in der Schleife auf verschiedene Indexe zugreifst

[c]books.get(i).getId()[/c] und [c]books.get(id).getId()[/c]

das geht natürlich nicht. ;-)

Danke, das wars :applaus:

Hab's in
Java:
			if (id == books.get(i).getId()){
				s = "ID: "+books.get(id-1).getId()+" Title: "+books.get(id-1).getTitle()+" Author: "
						+books.get(id-1).getAuthors();
			}
geändert.

Hoffe ich hab das jetzt richtig verstanden:
Also der Vector beginnt bei 0 wie ein Array.
Ich habe der Suchmethode aber die ID übergeben (Die, da ich kein Buch mit der ID 0 erstellen wollte, mit 1 beginnt). Um den Index wieder anzupassen, bleibt mir also nichts anderes übrig als die id bei den Abfragen zu ändern.

Im Parameter der Methode sind keine arithmetischen Operationen erlaubt oder?
Code:
public String getBook(int id-1){
zb geht nicht.
 

AquaBall

Top Contributor
Schon klar, dass du kein Array verwendest, aber du wolltest ja auch nur einen Hinweis.

Übrigens ist genau das der Grund von Java's genialen Konstruktionen.
Dein Schleife gehört typisch ohne Zähler konstruiert. (Ist der wesentliche Unterschied zw. Array und List.)
Java:
for(Book book:books){
     if (id == book.getId()){
         s = "ID: "+book.getId()+" Title: "+book.getTitle()+" Author: " +book.getAuthors();
     }
}

Dein
Code:
getBook
macht eigentlich genau das was die typische Anwendung von
Code:
toString
in der Klasse Book sein sollte.
Java:
 String toString() {
     return = "ID: "+this.getId()+" Title: "+this.getTitle()+" Author: " +this.getAuthors();
}

Die Funktion
Code:
books.getKey(object)
(statt books.get(i).getId()!) wurde in HashList schon erfunden und macht die Schleife überhaupt auch überflüssig.
Somit sollte das so aussehen:

Java:
 public String getBook(int id){
        return books.getKey(id).toString();
    }
Jetzt wurde es wohl doch mehr als nur ein Hinweis. ;)
 

AquaBall

Top Contributor
Du hast gedanklich INDEX und ID/KEY noch nicht deutlich genug getrennt!

Wenn du die/eine Schleife durchlaufen willst, dann "muss" die von 1 bis n gehen. (=Index)

Versuch aber mal deine IDs z.B 5010,5053,7311 zu verwenden, (= ID, so wie ein ISBNummer) dann erkennst du einen Fehler sofort.
(Das ist ja vermutlich der Grund, warum du ein ArrayList verwendest.)
(Übrigens solltest du Vektor nicht mehr benutzen.)
 

langhaar!

Bekanntes Mitglied
Im Parameter der Methode sind keine arithmetischen Operationen erlaubt oder?
Code:
public String getBook(int id-1){
zb geht nicht.

Doch. Wenn als Parameter ein int erwartet wird, kann das ein beliebiger Ausdruck sein, der einen int ergibt. Dein Beispiel ist falsch, weil die Deklaration da nichts zu suchen hat. Es muss getBook(id-1) heissen. (Zumindest ist es dann syntaktisch richtig)
 
Zuletzt bearbeitet:
P

Pippl

Gast
Doch. Wenn als Parameter ein int erwartet wird, kann das ein beliebiger Ausdruck sein, der einen int ergibt. Dein Beispiel ist falsch, weil die Deklaration da nichts zu suchen hat. Es muss getBook(id-1) heissen. (Zumindest ist es dann syntaktisch richtig)

sie meint in der signatur der methode. da geht es natürlich nicht,
aber bei einen normalen methodenaufruf schon!
 

Alina_C

Mitglied
Schon klar, dass du kein Array verwendest, aber du wolltest ja auch nur einen Hinweis.

Übrigens ist genau das der Grund von Java's genialen Konstruktionen.
Dein Schleife gehört typisch ohne Zähler konstruiert. (Ist der wesentliche Unterschied zw. Array und List.)
Java:
for(Book book:books){
     if (id == book.getId()){
         s = "ID: "+book.getId()+" Title: "+book.getTitle()+" Author: " +book.getAuthors();
     }
}

Dein
Code:
getBook
macht eigentlich genau das was die typische Anwendung von
Code:
toString
in der Klasse Book sein sollte.
Java:
 String toString() {
     return = "ID: "+this.getId()+" Title: "+this.getTitle()+" Author: " +this.getAuthors();
}

Die Funktion
Code:
books.getKey(object)
(statt books.get(i).getId()!) wurde in HashList schon erfunden und macht die Schleife überhaupt auch überflüssig.
Somit sollte das so aussehen:

Java:
 public String getBook(int id){
        return books.getKey(id).toString();
    }
Jetzt wurde es wohl doch mehr als nur ein Hinweis. ;)



Sorry, da hab ich doch noch Probleme.
Also die toString Methode wird in der Klasse Book <überschrieben> ?
Eine getKey() Methode steht nicht zur Verfügung und eine java.util.HashList kann ich für einen Import nicht finden.
 

AquaBall

Top Contributor
Also die toString Methode wird in der Klasse Book <überschrieben> ?
Ja, die solltest du in deiner Klasse Book überschreiben.
(@override
String toString() {...})

Eine getKey() Methode steht nicht zur Verfügung und eine java.util.HashList kann ich für einen Import nicht finden.
Naja dann halt:
Code:
import java.util.Hash[B]Map[/B];
wer wird das schon so genau nehmen? ;)
 

Alina_C

Mitglied
Ja, die solltest du in deiner Klasse Book überschreiben.
(@override
String toString() {...})
Okay danke.

Naja dann halt:
Code:
import java.util.Hash[B]Map[/B];
wer wird das schon so genau nehmen? ;)

Kann es sein, dass die Methode einfach nur get heißt? Nur halt eben angewandt an einer Map ?
(laut javadoc eg:
Code:
Map m = Collections.synchronizedMap(new HashMap(...));
)
Das machts dann irgendwie doch komplizierter als zunächst von mir gedacht.
 

AquaBall

Top Contributor
Wenn du aus der HashMap holst, dann machst du das durch:
Code:
get(key)

Wenn du loopen willst kommst du mit getKey() an den key:
Java:
for( Map.Entry<String,Double> entry : myHashMap.entrySet() ) {
	k=entry.getKey();;
	v =entry.getValue();
	...
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
P Objekte in Vector werden überschrieben Java Basics - Anfänger-Themen 4
P Array in Vector speichern Java Basics - Anfänger-Themen 2
E Methoden new Vector().add(x).add(x); ? Java Basics - Anfänger-Themen 5
F Vector istGeordnet Java Basics - Anfänger-Themen 15
R Vector-Filterfunktion Java Basics - Anfänger-Themen 4
Todesbote Map (Key=String; Value = Vector) Value/Vector sortieren Java Basics - Anfänger-Themen 13
J Vector Manipulieren.. Wie? Java Basics - Anfänger-Themen 16
M Vector eines Vectors einzeln ausgeben Java Basics - Anfänger-Themen 9
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
J Erzeugung eines Vector-Objekts - Frage zum Typ Java Basics - Anfänger-Themen 3
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
U Wozu dient ein Vector in Java? Java Basics - Anfänger-Themen 6
S Vector mit beliebigen Klassen an Funktion übergeben Java Basics - Anfänger-Themen 20
B Globale vector? Java Basics - Anfänger-Themen 7
E 2 Dimensionaler Vector Java Basics - Anfänger-Themen 5
T Map<String, Vector>? Java Basics - Anfänger-Themen 11
P Collections Vector füllen in for-Schleife Java Basics - Anfänger-Themen 3
J Vector Addition Java Basics - Anfänger-Themen 5
M 2D Vector Java Basics - Anfänger-Themen 2
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
M Umwandlung von Array in Vector und umgekehrt Java Basics - Anfänger-Themen 6
E Datentypen Klasse Vector aus der Standard-API anwenden Java Basics - Anfänger-Themen 7
D Klasse Vector entwerfen Java Basics - Anfänger-Themen 7
A Arrays vs Liste vs Vector Java Basics - Anfänger-Themen 30
H in for Schleife über Vector iterieren Java Basics - Anfänger-Themen 2
S Datentypen Vector auslesen Java Basics - Anfänger-Themen 12
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
C Datentypen Probleme mit Vector.contains() Java Basics - Anfänger-Themen 10
M Datentypen function(Vector<SuperClass>), Vector<Subclass> Java Basics - Anfänger-Themen 6
L Vector Sortieren Java Basics - Anfänger-Themen 8
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
B Werte einer Spalte aus DB in einen Vector schreiben Java Basics - Anfänger-Themen 15
kitz Telefonbuch (Vector) Java Basics - Anfänger-Themen 17
E Arraylist mit Daten aus Vector füllen Java Basics - Anfänger-Themen 7
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
F Vector wird überschrieben Java Basics - Anfänger-Themen 8
T Vector sortiern Java Basics - Anfänger-Themen 7
C Frage zu Vector und muliplizieren des Inhaltes Java Basics - Anfänger-Themen 2
S Vector von eigenen Klassen Java Basics - Anfänger-Themen 2
J Collection Vector Java Basics - Anfänger-Themen 8
Streeber ArrayList/Vector, mehrdimensional Java Basics - Anfänger-Themen 11
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
babel Einen Vector/Liste mit Daten prüfen Java Basics - Anfänger-Themen 31
B Hilfe zum einem Problem mit Vector Java Basics - Anfänger-Themen 8
H Vector - Fehler? Java Basics - Anfänger-Themen 2
babel einen Vector nach Datum sortieren Java Basics - Anfänger-Themen 21
T Array-Vector Problem Java Basics - Anfänger-Themen 18
P Vector und Exception Java Basics - Anfänger-Themen 7
K Vector Java Basics - Anfänger-Themen 3
K Vector Java Basics - Anfänger-Themen 10
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
T Object aus Vector übergeben Java Basics - Anfänger-Themen 2
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
L Vector einem Array hinzufügen Java Basics - Anfänger-Themen 14
P Vector mit double Java Basics - Anfänger-Themen 3
P Vector Elemente auslesen Java Basics - Anfänger-Themen 9
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
W Vector mit String[] auslesen Java Basics - Anfänger-Themen 4
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
B Dopplete aus Vector entfernen Java Basics - Anfänger-Themen 8
E Vector Fehler bei allen Methoden von Vector Java Basics - Anfänger-Themen 2
K Vector zu Array machen Java Basics - Anfänger-Themen 10
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
L Multidimensional Vector - Recordset Java Basics - Anfänger-Themen 5
K Objektklasse mit leerem Vector füllen Java Basics - Anfänger-Themen 6
K Vector wird überschrieben Java Basics - Anfänger-Themen 7
G Vector Strijng parsen Java Basics - Anfänger-Themen 6
K vector cannot be resolved Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
M ObjectInputStream, Object und Vector<Object> Java Basics - Anfänger-Themen 4
G Vector, equal & Casts Java Basics - Anfänger-Themen 5
N Objekte in einen Vector packen oder nicht? Java Basics - Anfänger-Themen 3
D Frage zu Vector Java Basics - Anfänger-Themen 7
S Problem mit Vector Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G 2D vector zugriff auf elementinterne elemente wie Java Basics - Anfänger-Themen 3
G vector in neuem vector sortieren Java Basics - Anfänger-Themen 3
G jede 2te zeile in vector leer einfügen, wie? Java Basics - Anfänger-Themen 4
G vector füllt sich immer weiter. wo muss ich ihn leeren? Java Basics - Anfänger-Themen 3
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Vector eigenen Typs mit Daten füllen Java Basics - Anfänger-Themen 20
H Vector und Dateien Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben