# eigene klasse in listen eintragen



## barneydlx (24. Jun 2012)

moin, 
ich habe ein kleines problemchen, ich habe eine klasse definiert , welche verschiedene Attribute hat. in einer anderen klasse möchte ich per Tastatur Eingabe diese Attribute definieren und in eine liste eintragen. aber beim eintragen in die liste hagelt es an Fehlermeldungen bei meiner Methode.
über hinweise würde ich mich freuen!

hier einfaches Beispiel der Problemstellung und meines Lösungsversuch.


```
public class a {
	static double speed;
	static double height;

	a(){
		speed=0;
		height=0;
}
}
```


```
public class plane {

	public static void main(String[] args) {


		ArrayList<a>altitude=new ArrayList<a>();
		Scanner sc=new Scanner(System.in);
		
		System.out.println("please insert speed and height");
		a.speed=sc.nextDouble();
		altitude.add(a.speed);
		a.height=sc.nextDouble();
		altitude.add(a.height);
		
				

	}

}
```


----------



## Gast2 (24. Jun 2012)

Du hast die Liste als eine Liste von 
	
	
	
	





```
a
```
 Objekten definiert. Also musst du auch 
	
	
	
	





```
a
```
 Objekte reinlegen. Im Folgenden mal groß geschrieben, sollte man immer machen:

```
A a = new A ();
altitude.add(a);
```

Die statischen Attribute in a machen keinen Sinn.


----------



## AquaBall (24. Jun 2012)

Und dann fehlen aber noch die Setter für speed/heigth.
statt:

```
a.speed=sc.nextDouble();
```


Außerdem kannst du nicht speed/heigth getrennt adden!
Was soll das eigentlich bewirken? (wenn 
	
	
	
	





```
a
```
 aenigsten instanziiert wäre)

```
altitude.add(a.speed);
```
(Ist ja auch nicht logisch)

PS: Was hat "altitude" mit speed/heigth zu tun? Seltsame Namenswahl.


----------



## barneydlx (24. Jun 2012)

vielen dank für diese hinweise , und ich würde diese auch echt gerne umsetzen aber verstehen einfach nicht wie. das ich diese liste nur mit a Objekten füllen kann ist jetzt für mich klar, aber danach hörts auch schon leider wieder auf...


----------



## Gast2 (24. Jun 2012)

Was genau ist dir denn unklar?


```
public class A {
  private double speed;
  private double height;
 
  public A (double speed, double height) {
    this.speed = speed;
    this.height = height;
  }

  // getter/setter/etc.
}

[...]
List<A> listOfAs = new ArrayList<A>();

A a1 = new A (2.0, 100.0);
A a2 = new A (3.0, 50.0);

listOfAs.add(a1);
listOfAs.add(a2);
```


----------



## barneydlx (24. Jun 2012)

diese schritte habe ich jetzt glaube Ichs chon verstanden aber wenn ich die werte über einen Scanner einlesen lasse und dann das ganze einmal ausgeben lasse bekommen ich für a1 so etwas als Ausgabe: test.B@27ce2dd4


----------



## Gast2 (24. Jun 2012)

Dann musst du die toString() Methode der Klasse entsprechend überschreiben und eine andere Stringrepräsentation zu bekommen:
Galileo Computing :: Java ist auch eine Insel – 9.3 Object ist die Mutter aller Klassen


----------

