# Die Eingabe von beliebig vielen Zahlen in ein Array - ich kann es nicht



## hacon (29. Dez 2011)

Hallo,

ich bin Azubi und soll in der Schule JAVA programmieren, habe ich aber bis jetzt 
noch nie.

Wir arbeiten jetzt seit 2 Wochen mit Arrays und haben bis jetzt die Länge des Arrays 
vordefiniert. so sieht das aus wenn ich die Länge des Arrays auf 5 definiere.

private static double[] zahl= new double[5];

nun möchte ich, dass der Benutzer des "Programms" die Möglichkeit hat, mehrere
Zahlen einzugeben anstatt die die ich vordefiniert habe.

er soll eingeben z B 5 und dann soll er 5 Zahlen nach der reihe eingeben (was soweit auch möglich ist, wenn ich die Länge des Arrays auf 100 einstelle, finde ich aber doof, weil mein Programm dann nicht richtig funktioniert - habe an einigen stellen in der for schleife index < array.length)

gibt es da eine andere Lösung ?


----------



## triopsfreak (29. Dez 2011)

Der User gibt ein wieviele Zahlen er eingibt?
Indemfall kannst du ja einfach das Array erst während der Laufzeit anlegen, mit der vom User gewählten grösse!


----------



## hacon (29. Dez 2011)

dies wäre der Part, wo das mit der beliebigen Eingabe ist:

public static void neueZahlen() {
    System.out.println("Geben Sie beliebig viele Zahlen ein");
    int beliebig = kbd.nextInt();

    for (int i = 0; i < beliebig; i++) {
      System.out.println("Bitte die Zahl " +(i + 1) + " eingeben ");
      zahl_ = Aufg.kbd.nextDouble();

    }
    kbd.nextLine();
    System.out.println("Weiter mit ENTER...");
    Aufg.kbd.nextLine();
  }

die ist unterhalb der Länge des Arrrays.
nach deiner Lösung würde ich dies hier private static double[] zahl= new double[beliebig];
unter neueZahlen packen


public static void neueZahlen() {
    System.out.println("Geben Sie beliebig viele Zahlen ein");
    int beliebig = kbd.nextInt();

    for (int i = 0; i < beliebig; i++) {
      System.out.println("Bitte die Zahl " +(i + 1) + " eingeben ");
      zahl = Aufg.kbd.nextDouble();

    }
    kbd.nextLine();
    System.out.println("Weiter mit ENTER...");
    Aufg.kbd.nextLine();
private static double[] zahl= new double[beliebig];
  }

hat nicht geklappt...._


----------



## triopsfreak (29. Dez 2011)

Die variable beliebig, ist die für die Anzahl Zahlen? Wenn ja, dann musst du das Array ganz oben erstellen, gleich nachdem du die Anzahl ausgelesen hast!


----------



## hacon (29. Dez 2011)

dies ist mein Code, könntest Du mir das vielleicht einmal zeigen? denn dann würde ich das sehen ich recherchiere seit einer Stunde und komme nicht weiter 


```
import java.util.Scanner;

public class Aufg {
  private static Scanner kbd = new Scanner (System.in);
  private static double[] autos = new double[4];


  public static void main (String [] args) {
    char wahl;
    do {
      System.out.println("----------------------");
      System.out.println("Menue \n");
      System.out.println("1 - Neue Zahl eingeben \n");
      System.out.println("2 - Aktuelle Zahlen ausgeben \n");
      System.out.println("3 - Summer berechnen \n");
      System.out.println("4 - Durchschnitt \n");
      System.out.println("5 - Alle geraden Zahlen \n");
      System.out.println("6 - Jede zweite Zahl \n");
      System.out.println("7 - ENDE \n");
      System.out.println("----------------------");
      wahl = kbd.nextLine().charAt(0);
      switch (wahl) {
        case '1' : neueZahlen(); break;
        case '2' : ausgabe(); break;
        case '3' : summe(); break;
        case '4' : durchschnitt(); break;
        case '5' : geradeZahlen(); break;
        case '6' : zweiterWert(); break;
        case '7' : System.out.println("\n Das Programm wird beendet..."); return;
        default : System.out.println("Achten Sie bitte auf das Menue und geben Sie richtige Werte ein \n");

      }
    }while (true);

  }


  public static void neueZahlen() {
    System.out.println("Geben Sie beliebig viele Zahlen ein");
    int beliebig = kbd.nextInt();

    for (int i = 0; i < beliebig; i++) {
      System.out.println("Bitte die Zahl " +(i + 1) + " eingeben ");
      autos[i] = Aufg.kbd.nextDouble();
      
    }

    kbd.nextLine();
    System.out.println("Weiter mit ENTER...");
    Aufg.kbd.nextLine();
  }

  
  public static void ausgabe() {
    System.out.println("Das sind die Zahlen, die Sie eingegeben haben: ");
    for (int i = 0; i < autos.length; i++) {
      System.out.println((i + 1) + ": " + autos[i]);
    }
      System.out.println("Weiter mit ENTER...");
      Aufg.kbd.nextLine();
  }
  
  public static void summe() {
    System.out.println("Die Summer der eingegebenen Zahlen: \n");
    System.out.println(autos[0] + autos[1] + autos[2] + autos[3]);
    System.out.println();
    
    System.out.println("Weiter mit ENTER...");
    Aufg.kbd.nextLine();
  }
  
  public static void durchschnitt() {
    System.out.println("Der Durchschnitt der eingegebenen Zahlen");
    double sum = 0, durchschnitt = 0;
    for (int i = 0; i < autos.length; i++) {
      sum += autos[i];
    }
    durchschnitt = sum / autos.length;
    System.out.println(durchschnitt);
    System.out.println("Weiter mit ENTER...");
    Aufg.kbd.nextLine();
  }
  public static void geradeZahlen() {
    System.out.println("Die Ausgabe aller geraden Zahlen: \n");
    for (int i = 0; i < autos.length; i++) {

      double gerade = autos[i] % 2;
      if (gerade == 0) {
        System.out.println(autos[i]);
      }
    }
    System.out.println("Weiter mit ENTER...");
    Aufg.kbd.nextLine();
  }
  
  public static void zweiterWert() {
    System.out.println("Jede zweite Zahl lautet: \n");
    System.out.println(autos[1]);
    System.out.println(autos[3]);
    System.out.println("Weiter mit ENTER...");
    Aufg.kbd.nextLine();
  }
}
```


----------



## triopsfreak (29. Dez 2011)

```
public static void neueZahlen() {
    System.out.println("Geben Sie beliebig viele Zahlen ein");
    int beliebig = kbd.nextInt(); // Hier hast du die grösse des Arrays, oder?
    autos = new double[beliebig]; // Hier machst du daraus dann das neue Array mit der gegeben grösse
    for (int i = 0; i < beliebig; i++) {
      System.out.println("Bitte die Zahl " +(i + 1) + " eingeben ");
      autos[i] = Aufg.kbd.nextDouble();
      
    }
 
    kbd.nextLine();
    System.out.println("Weiter mit ENTER...");
    Aufg.kbd.nextLine();
  }
```


----------



## hacon (29. Dez 2011)

aaahh Danke den ersten Teil habe ich jetzt dank Dir :applaus:


----------

