# float Array deklarieren



## 1207 (22. Nov 2013)

Hallo,
ich hab eine Aufgabe, in der ich eine Methode static float[] createFloatArrayWithNumbers(int count) implementieren soll, die ein Array erzeugt, in dem count viele float-Werte gespeichert werden können. In jedem Speicherplatz des Arrays soll ein Wert gespeichert werden, der nicht 0.0f ist oder der Position entspricht.
Das habe ich dazu schon gemacht, aber leider wird mir nur das: [F@13c5982 ausgegeben und ich hab keine Ahnung warum...

```
static float[] creatFloatArraysWithNumbers( int count) {

float[] arr = new float[count];

for(int i= 0; i<arr.length; i++)
arr[i] = i / 2 + 1;

return arr;
}

public static void main(String[] args) {
System.out.print(creatFloatArraysWithNumbers( 3 ));
}
```


----------



## rme (22. Nov 2013)

Nun, System.out.println() verlangt einen Parameter vom Typ String als Parameter. Du übergibst aber keinen String, sondern ein anderes Objekt (in diesem Fall ein Array). Dann wird immer die toString()-Methode des Objekts aufgerufen, um eine String-Darstellung zu erhalten. Wenn man da nix eigenes bastelt, ist dies üblicherweise der Hash-Wert des Objekts und der Name der Klasse, das erklärt deine Ausgabe.

Probier mal: System.out.println(Arrays.toString(creatFloatArraysWithNumbers(3)));

Arrays.toString() ist eine Methode, die für jedes Element eines Arrays toString() aufruft und daraus einen Gesamtstring erstellt.


----------



## 1207 (22. Nov 2013)

Ok, ich habe jetzt meine Main Methode zu dem hier geändert:


```
public static void main(String[] args) {
    System.out.println(Arrays.toString(creatFloatArraysWithNumbers(3)));
    }
```

aber jetzt gibt mir die Konsole folgende Fehlermeldung:

   cannot find symbol
    System.out.println(Arrays.toString(creatFloatArraysWithNumbers(3)));
                       ^
  symbol:   variable Arrays
  location: class blatt5
1 error
<<< Process finished. (Exit code 1)


----------



## rme (22. Nov 2013)

import java.util.Arrays;



Falls ihr das mit den Imports noch nicht habt oder dürft, müsstest du dein Array eben in main abspeichern und mit einer weiteren Schleife ausgeben, so wie du das beim Erzeugen auch gemacht hast.


----------



## 1207 (22. Nov 2013)

Dieses import Ding haben wir noch nicht gelernt und ich habe wirklich gar kein Vorwissen von Java und verstehe leider auch nicht genau was du mit:
"Array eben in main abspeichern und mit einer weiteren Schleife ausgeben"
meinst. Könntest du das bitte nochmal etwas detaillierter für mich erklären?


----------



## rme (22. Nov 2013)

Klar 

Deine Methode gibt ja ein Objekt vom Typ "float-Array" zurück, also kannst du es auch so abspeichern, wie du es angelegt hast:

float[] werte = creatFloatArraysWithNumbers(3);

Dann kannst du eine Schleife darüber laufen lassen, die die Werte ausgibt, genau wie beim Befüllen:


```
for(int i= 0; i < werte.length; i++) {
  System.out.println(werte[i]);
}
```


----------



## 1207 (22. Nov 2013)

Also ich muss zugeben ich habe das immernoch nciht so ganz verstanden, aber ich habe das jetzt mal so gemacht, wie ich denke du es gemeint hast, also so:


```
public static void main(String[] args) {
	    for(int i= 0; i < arr.length; i++) {
       System.out.println(arr[i]);
       }
    }
```

aber dann sagt mir die gute Konsole das:
 error: cannot find symbol
	    for(int i= 0; i < arr.length; i++) {
	                      ^
  symbol:   variable arr
  location: class blatt5
C:\Users\C_I_N_J_A\Desktop\blatt5.java:47: error: cannot find symbol
       System.out.println(arr_);
                          ^
  symbol:   variable arr
  location: class blatt5
2 errors
<<< Process finished. (Exit code 1)
================ READY ================

und das sieht leider nicht so gut aus... :'(_


----------



## 1207 (22. Nov 2013)

Oh es hat sich was getan! Ich glaube ich habs verstanden  Also mittlerweile sieht meine Main Methode so aus:


```
public static void main(String[] args) {
	float[] werte = creatFloatArraysWithNumbers(3);
	    for(int i= 0; i < werte.length; i++) {
       System.out.println(werte[i]);
       }
    }
```

und es werden keine Fehler mehr gezeigt!!!!
und die Ausgabe ist:
1.0
1.0
2.0

das ist zwar noch nicht 100 prozentig was ich haben wollte, aber immerhin gibt es mir jetzt Zahlen aus!
Vielen, vielen Dank für deine Bemühungen!!


----------



## rme (22. Nov 2013)

Genau so meinte ich es, sehr gut  Tipp für dein nächstes Problem: Wenn du int durch int teilst, ist das Ergebnis auch ein int, die Nachkommastellen werden also gar nicht berechnet. Das ist in dem Ausdruck i / 2 + 1 relevant, da sind alle beteiligten Terme nämlich ints


----------



## 1207 (22. Nov 2013)

Oh das habe ich sogar direkt verstanden 
Hab meine Methode jetzt zu dem geändert:


```
static float[] creatFloatArraysWithNumbers( int count) {
	     
	     float[] arr = new float[count];
		
             for(int i= 0; i<arr.length; i++)
             arr[i] = (i / 2.0f) + 1.0f;  			 
			 
			 return arr;
		 
	 }
```
und juhu es kommt raus, was ich wollte 
Danke, danke, danke!!!!!


----------



## rme (22. Nov 2013)

Man kann richtig spüren, wie die Erfolgserlebnisse bei dir kognitive Höhepunkte auslösen..  Auf diese Art wird man bald abhängig vom Programmieren, wird dadurch immer besser, irgendwann werden die Haare länger..


----------

