# Zahlen einlesen und ausgeben, Array



## Soulcraft (7. Feb 2014)

```
public class VariablesArrayMethoden {
	
	public static void main(String[] args) {
		________ einlesenZahlen(________);
		________ ausgebenZahlen(________);
	}
	
	private static ________ einlesenZahlen(________) {
		:::
	}
	
	private static ________ ausgebenZahlen(________) {
		:::
	}
}
```
Vorweg, es ist keine Hausaufgabe. Ich hänge etwas hinterher und weiß nicht wie ich den oberen Quellcode mit den Funktionen des folgenden ausstatten kann: package Arrays;

```
import java.io.*;

import oopinout.IO;

public class VariablesArrayMethoden {

	
	

	public static void main(String[] args) throws IOException {
		
		System.out.println("geben sie die zu erfassenden zahlen ein: ");
		int erfassen = oopinout.IO.readInteger();
		
		int[] zahlen = new int[erfassen];
		
		for(int i = 0; i<zahlen.length;i++) {
			System.out.println("geben sie die zahl " + (i+1) + " ein");
			zahlen[i] = IO.readInteger();
			
		}
		
		
		for(int i = 0; i<zahlen.length;i++) {
		System.out.println(zahlen[i]);
		}
		
		

	}

}
```

Es sollen zahlen eingelesen und ausgegeben werden. Diese Schritte sollen unabhängig voneinander in verschiedene Methoden implementiert werden.


----------



## JavaMeister (7. Feb 2014)

Du hinkst also "etwas" hinterher.

Schauen wir mal.

Also oben soll sein, wie unten, jedoch in methoden ausgelagert?

einlesenZahlen(________);

Was muss die Methode wissen, und was gibt sie zurück, wenn wir sowas haben:


```
System.out.println("geben sie die zu erfassenden zahlen ein: ");
        int erfassen = oopinout.IO.readInteger();
       
        int[] zahlen = new int[erfassen];
```


----------



## Soulcraft (7. Feb 2014)

Ok, nicht nur 'etwas'...
Ich muss einiges nachholen und dachte, dass ich hier gut beraten wäre.


```
package Arrays;

import java.io.*;
import oopinout.IO;



public class VariablesArrayMethoden {
    
    public static void main(String[] args) {
        
		int zahlen = einlesenZahlen(int readInteger);
        int ausgeben = ausgebenZahlen(int readInteger);
    }


    
	protected int erfassen;
    
    private static int[] zahlen = new int[5];
    
    private static void  einlesenZahlen(int readInteger) {
    	 for(int i = 0; i<zahlen.length;i++) {
             System.out.println("geben sie die zahl " + (i+1) + " ein");
             int zahlen = oopinout.IO.readInteger();
             
         }
    }
    
    private static void ausgebenZahlen(int readInteger) {
    	for(int i = 0; i<zahlen.length;i++) {
            System.out.println(zahlen[i]);
            }
            
    }
}
```

Mehr fällt mir nicht ein. Ich weiß nicht wie ich die Methoden schreiben soll ;(


----------



## JavaMeister (7. Feb 2014)

Macht das den, was du geschrieben hast Sinn? - Ich glaube nicht.

Bitte beantworte meine Frage.

Kleiner Tipp: Alle Methoden und Variablen müssen static sein.


----------



## Soulcraft (8. Feb 2014)

Ja, oben soll sein wie unten nur in Methoden ausgelagert.


----------



## JavaMeister (8. Feb 2014)

Das meine ich nicht.

Was muss die Methode wissen, und was gibt sie zurück, wenn wir sowas haben:

einlesenZahlen(________);

Was muss die Methode wissen, und was gibt sie zurück, wenn wir sowas haben:


```
System.out.println("geben sie die zu erfassenden zahlen ein: ");
            int erfassen = oopinout.IO.readInteger();
           
            int[] zahlen = new int[erfassen];
```

Du musst die Sache systematisch analysieren. Ich fange mal an:

Man braucht die anzahl der zu lesenden Zahlen.

Was gibt die Methode zurück?


----------



## Soulcraft (8. Feb 2014)

Ein Array mit der Anzahl der zuvor eingegeben Zahl? :rtfm:
Ich möchte ehrlich was dazu lernen, ich hoffe, dass du dich nicht über meine Unwissenheit aufregst...


----------



## JavaMeister (8. Feb 2014)

Hi,

sorry, nein ich rege mich weder auf noch verurteile ich oder der gleichen.

Es geht hier darum die Methodik kennen zu lernen, mit der man sowas programmiert.

also der Kopf der Methode sieht so aus:


```
public static int[] einlesenZahlen(int anzahl) {
// Dann kommt hier das folgende rein:
______________________; // Hier muss was hin, das die Zahlen speichert.
 for(int i = 0; i<anzahl;i++) {
             System.out.println("geben sie die zahl " + (i+1) + " ein");
             _______= oopinout.IO.readInteger();
             // Hier fehlt noch das korrekte speichern.
         }

return ___________; // Dann muss eas zurück gegeben werden.
}
```


----------



## Soulcraft (9. Feb 2014)

```
public static int[] einlesenZahlen(int anzahl) {
// Dann kommt hier das folgende rein:
static int[] zahlen = new int[anzahl]; // Hier muss was hin, das die Zahlen speichert.
 for(int i = 0; i<anzahl;i++) {
             System.out.println("geben sie die zahl " + (i+1) + " ein");
             zahlen[i]= oopinout.IO.readInteger();
             // Hier fehlt noch das korrekte speichern.
         }
 
return ___________; // Dann muss eas zurück gegeben werden.
}
```

So schonmal richtig?


----------



## JavaMeister (9. Feb 2014)

Und weiter...


----------



## Soulcraft (9. Feb 2014)

```
package Arrays;
import java.io.*;

public class VariablesArrayMethoden1 {

	
	static int[] zahlen;
	
	public static void einlesenZahlen() throws IOException{
		
		System.out.println("Geben Sie die Anzahl der einzulesenden Zahlen ein: ");
		int erfassen = oopinout.IO.readInteger();
		
		 zahlen = new int [erfassen];
		
		for(int i = 0;i<zahlen.length;i++){
			System.out.println("geben sie die zahl " + (i+1) + " ein");
			   zahlen[i] = oopinout.IO.readInteger();
		}
		
		
		
	}
	
	public static void ausgebenZahlen()throws IOException{
		for(int i = 0; i<zahlen.length;i++) {
			   System.out.println(zahlen[i]);
			  }
		
		
	}
	
}
```

Ich bekomme es einfach nicht zum laufen. Ist der Ansatz zumindest richtig?

Bei dem anderen weiß ich nicht was er mit return zurückgeben könnte bzw. muss.


----------



## JavaMeister (9. Feb 2014)

Wieso bringst du es nicht zu laufen?

Auf diese Art und Weise muss die Methode nix zurückgeben.

---

Du musst natürlich oopinout auch entsprechen deklarieren und initialisieren.


----------



## Soulcraft (9. Feb 2014)

Wenn ich den Quellcode ausführe, führt er ein anderes Programm aus dem package aus...
Egal was ich mache, es scheitert daran.

Edit: Error: Could not find or load main class Arrays.VariablesArray

Der Fehler wird mir nun angezeigt.


----------



## JavaMeister (9. Feb 2014)

Wie führst du es aus?

Kannst Du Dir bitte angewöhnen mehr Informationen zu posten?

"Geht nicht" "Weiß ich nicht" helfen nicht bei der Analyse.


----------



## Soulcraft (9. Feb 2014)

Ja kann ich :rtfm:

Mit dem weißen Pfeil der in einem grünen Kreis ist. Also so wie immer.
Komischerweise kommt der Fehler nur wenn ich die Klasse VariablesArray lösche.
Wenn ich sie wieder erstelle und den Quellcode reinkopiere führt er wieder diesen aus.

Ich hoffe, das ich nichts vergessen habe..

Edit: Ich nutze Eclipse


----------



## JavaMeister (9. Feb 2014)

Rechter Mausklick auf die Datei => Ausführen als "Java Application".

Diese Klasse muss dann aber auch eine Main Methode haben.

Sie ist zudem nicht kompilierbar, musst sie also zu ende schreiben.


----------



## Soulcraft (10. Feb 2014)

Habe die Main-Methode hinzugefügt und es funktioniert alles 

Jetzt wäre ich beim nächsten Problem (nicht sonderbar groß).


```
package Interfaces;

public class Programm {

	
	public static void main(String[] args) {
		
		Person p = new Person();
		Artikel a = new Artikel();
		Haus h = new Haus();
		Tür t = new Tür();
		
		BenutzerEingabe[] b = new BenutzerEingabe[4];
		
		b[0] = new Haus();
		b[1] = new Tür();
		b[2] = new Artikel();
		b[3] = new Person();
		
		
		
	}

}
```

Die Objekte im Array haben alle die Methode eingabe().
Wie rufe ich diese nochmal auf? Bei allen Objekten.
In einer Schleife soll es sein.

Den oberen Teil kann ich mir sparen oder?


----------



## JavaMeister (10. Feb 2014)

> Den oberen Teil kann ich mir sparen oder?



genau.

Den anderen Teil musst du lernen. Vielleicht mal auch in ein Buch reinlunzen ;D


----------

