# Strings von Tastatur einlesen und in ArrayList speichern



## Guest (30. Okt 2008)

Ich habe vor mit dem BufferedReader Strings einzulesen und diese sollen dann in einer ArrayList gespeichert werden.

Habe bis jetzt das so gemacht :


```
String eingabe2;
							    InputStreamReader in=new InputStreamReader(System.in);
							    BufferedReader puffer=new BufferedReader(in);
							    System.out.println("Bitte geben Sie die Objektattribute ein:  ");
```

Dann meine ArrayList erzeugt :


```
private ArrayList<Graphik> list;

	public Objekteverwaltung() {
		list = new ArrayList<Graphik>();
	}
```

und habe eine Methode mit der ich die Objekte in einer ArrayList speicher.


```
public void hinzufuegen1(Graphik o) {
		list.add(o);
		System.out.println(o + " wurde in Liste gespeichert");
	}
```

Weiter weiß ich im moment nicht kann mir da jemand helfen ?


----------



## GilbertGrape (30. Okt 2008)

Wenn in der ArrayList Strings gespeichert werden sollen, ist dein Generic falsch. Es muss dann String sein und dann kannst du doch mit puffer.readLine die ArrayList füllen. Wo genau liest du denn ein und versuchst in die Liste zu speichern?


----------



## Guest (30. Okt 2008)

Ich habe vorher Objekte erzeugt :


```
Point point=new Point("Punkt",10,20,30,40);
		Linie linie=new Linie("Peter",20,5,10);
		Sphere sphere=new Sphere("Kugel",30,3,1,"gelb");
		Triangle triangle=new Triangle("Dreieck",40,50,-25,-40,"pink");
```

Diese wurden dann durch die Methode hinzugefügt zur Liste 


```
public void hinzufuegen1(Graphik o) {
		list.add(o);
		System.out.println(o + " wurde in Liste gespeichert");
	}
```

Nun möchte ich allerdings nicht das die Objekte mit den Attributen der Liste übergeben werden sondern die Attribute als Strings über den Bufferedreader eingelesen werden und in der ArrayList gespeichert werden . Weiß nicht genau wie ich da vorgehen soll


----------



## ARadauer (30. Okt 2008)

mal grundsätzlich blöd, dass die objekte unterschiedliche attribute brauchen... tja da muss dir was überlegen...

vielleicht, dass jedes objekt eine methode implementiert, die den benutzer nach genau den richtigen attributen fragt..

oder irgend ein factory pattern, das diese objekte erzeugt und je nach objekt typ die eingaben abfragt... oder du vereinheitlichst die objekte so, dass man sie mit den selben parametern füllen kann....


----------



## Guest (30. Okt 2008)

kannst du mir da evtl ein Beispiel nennen wie du das meinst mit der Methode für jedes Objekt das nach den Attributen fragt?


----------



## Guest (31. Okt 2008)

Habe das Problem gelöst und zwar so :


```
InputStreamReader in=new InputStreamReader(System.in);
						        BufferedReader puffer=new BufferedReader(in);
						        Graphik o=new Graphik(10,null);
						        System.out.println("Bitte namen eingeben: ");
						        einlesen=o.name=puffer.readLine();
						        System.out.println("ID eingeben:");
						        
						        
						        o.ID=Integer.parseInt(puffer.readLine());
						        System.out.println("1. Koordinaten eingeben");
					            // Zugriff auf die Eingaben mit Assoziation
						        linie.A_Punkt=Integer.parseInt(puffer.readLine());
						        System.out.println("2. Koordinaten eingeben");
						        linie.E_Punkt=Integer.parseInt(puffer.readLine());
						        verw.hinzufuegen1(einlesen+" "+o.ID+" "+linie.A_Punkt+ " "+linie.E_Punkt);
						        System.out.println(verw.getList());
```


Ich greife mit Instanzen auf die Atribute zu um sicherzustellen das der Benutzer die richtigen Formate eingibt und Verknüpfe das mit dem Einlesestrom und packe diesen dann in meine ArrayList. Funktioniert super  

Ich habe allerdings ein Problem mit dem Suchen und Löschen meiner Funktionen . Zum Beispiel will ich nun anhand der Eingegebenen ID im Strom nun mit Angabe der ID einen String aus der ArrayList löschen , meine Funktion ist :


```
public void suchen(int i) {

		Iterator it1 = list.iterator();
		while (it1.hasNext()) {
			String o = (String) it1.next();

			if (o.equals(i)) {
				// list.remove(sphere);

				System.out.println("Das Objekt " + o + " wurde gefunden");
				return;
			}
		}
		System.out.println("Das Objekt mit der ID wurde nicht gefunden");
	}
```

Kann mir jm sagen wieso das nicht funktioniert ?


----------



## Guest (4. Nov 2008)

kann mir da jemand einen Tipp geben?


----------



## Landei (4. Nov 2008)

> Zum Beispiel will ich nun anhand der Eingegebenen ID im Strom nun mit Angabe der ID einen String aus der ArrayList löschen



Habe zwar nur quergelesen, aber das hört sich so an als bräuchtest du statt der ArrayList eine Map mit deinen IDs als Schlüssel.


----------



## Guest (4. Nov 2008)

Also meine Daten werden durch den InputStreamReader in einer ArrayList gespeichert. Wenn ich mit getList() meine ArrayListe hole werden alle Eingaben eingaben angezeigt die ich in der Liste gespeichert habe  Nun will ich versuchen meine ArrayList die ja die Strings vom InputStreamReader erhalten in meiner ArrayListe gefunden werden tut es aber leider nicht


----------



## Landei (4. Nov 2008)

Dumme Frage: Kann es sein, dass du die Strings mit == vergleichst?


----------



## Guest (4. Nov 2008)

nein mit equals


----------



## Guest (4. Nov 2008)

Hab den Code jetzt so gemacht 


```
public String suchen(String i) {
	    	 
	    	Iterator<String> it=list.iterator();
			while(it.hasNext()){
		    String string=it.next();
			}
				if (it.next().toString().equals(i)){
						
				return "Das Objekt"+list.toString() +" wurde gefunden";
				
			}
				else{
					return"Das Objekt wurde nicht gefunden";
			}}
```


----------



## Guest (4. Nov 2008)

Ich glaube ich weiß wo das Problem liegt und zwar werden alle Funktionen einzeln aufgerufen. Wenn Button 1 gedrückt wird in meiner Gui, speichert er alles in meiner ArrayList also die Inputs (Strings) wenn ich Button 2 drück soll er mir die ArrayList durchsuchen allerdings gebe ich ja an das er den Iterator auf meine Liste ansetzen soll diese ist jedoch nicht Initialisiert da alle Eingaben in einer Textdatei gespeichert sind. Wie kann ich die textdatei nach den Elementen durchsuchen bzw das er die Datei durchsuchen soll also Angabe der Datei ???


----------

