Frage von marioboeck, 56

Wie kann ichWerte einer Schleife in einem Array speichern?

Ich versuche verzweifelt raus zu finden, wie man Werte von einer Schleife in einem Array speichert. Ich hoffe mir kann jemand helfen.

import java.util.Scanner;

public class Aufgabe51 {

public static void main(String[] args) {
    Scanner scn= new Scanner(System.in);
   
    int zaehler = 0, ergebnis;
   
   
   
    for(int i= 0; i<10; i++)
    {
    System.out.println("Geben Sie die Zahl ein");
    zaehler = scn.nextInt(); 

    }
   
    int [] ergebnis1 = {zaehler}; 
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von DarkNightmare, 38

Hi,

dein Problem liegt darin, dass du nur den letzten Wert den du eingelesen hast in dein Array speicherst.

    for(int i= 0; i<10; i++)
{
System.out.println("Geben Sie die Zahl ein");
zaehler = scn.nextInt();

}

Hier durchläufst du 10 mal deine Schleife. Jedesmal kann man eine Zahl eingeben und du speicherst diese in die Variable zaehler.

Das heißt du überschreibst jedesmal die Variable. Gebe ich beim letzten Durchlauf nun die Zahl 10 ein. Dann steht zum Schluss in deiner zaehler Variable nur der Wert 10 drin. Die vorherigen Eingaben wurden alle überschrieben. 

    int [] ergebnis1 = {zaehler}; 

Mit diesem Befehl erzeugst du nun ein Array, dass du mit zaehler initialisierst. Sprich ergebnis1 hat die Länge 1 und beinhaltet (in meinem Beispiel) lediglich die 10. 

Was du nun tun musst, ist das Array vor deiner Schleife zu deklarieren und dann innerhalb der Schleife die zaehler Variable im Array abzuspeichern. 

Gruß

Kommentar von marioboeck ,

import java.util.Scanner;

public class Aufgabe51 {

public static void main(String[] args) {
Scanner scn= new Scanner(System.in);

int zaehler = 0;
int[] ergebnis1 = {10};

for(int i = zaehler; i<10; i++)
{
System.out.println("Geben Sie die Zahl ein");
zaehler = scn.nextInt();

}

???

Kommentar von DarkNightmare ,

Hi,

noch zu keiner Lösung gekommen? 

int[] ergebnis1 = {10}; 

Das ist im Grunde genau das gleiche wie vorher. Nur das du hier das Array ergebnis1 gleich mit der 10 initialisierst. 

Dieser Befehl müsste so aussehen:

  int [] ergebnis1 = new int [10];

Damit deklarierst du ein int Array ergebnis1 mit 10 Elementen vom Typ int. 

Innerhalb deiner Schleife kannst du ganz einfach dein Array befallen indem du die Schleife damit ergänzt:

 ergebnis1[i] = zaehler; 

Die Variable i wird ja automatisch hochgezählt. Also zeigen wir nun auf jedes Element in deinem Array und speichern dort die zaehler Variable ab. 

Also ist dein ganzer Code:

public static void main(String[] args) {
Scanner scn= new Scanner(System.in);

int zaehler = 0;
int [] ergebnis1 = new int [10];

for(int i= 0; i<10; i++)
{
System.out.println("Geben Sie die Zahl ein");
zaehler = scn.nextInt();
ergebnis1[i] = zaehler;
}
}

Gruß

Kommentar von marioboeck ,

i cannot be resolved to a variable

Das gibt er mir jetzt als Fehlermeldung aus. 

Kommentar von DarkNightmare ,

Hm,

in welcher Zeile gibt es einen Fehler bei dir? Also wo wird die exception geschmissen? 

Habe es gerade mal in Eclipse eingefügt, ich bekomme de Fehler nicht. 

Gruß

Kommentar von adenosi ,

Kannst du mir kurz sagen wie man dieses blauen Kasten für den Source Code in seiner Antwort benutzt?

Kommentar von DarkNightmare ,

Wenn du eine Kommentar schreibst, befindet sich über dem kleinen Textfeld eine Leiste. Klick auf das Code Symbol  <> . 

Antwort
von Suboptimierer, 39

Du solltest das Array vor der Schleife deklarieren mit Anzahl an Elementen in Höhe von 10. Füllen kannst es dann mit "ergebnis1[i] = zaehler;" in der Schleife.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 10

Wenn du Werte in einer Array speichern willst, solltest du zuvor erst einmal die Größe der Array wissen, aber laut deinem Code weißt du diese bereits:


10

for(int i= 0; i<10; i++)


Entsprechend solltest du die Array vor deiner Schleife initialisieren und zwar mit der Länge:

int arrayGroesse = 10;
int[] ergebnis1 = new int[arrayGroesse];

Hiermit erhälst du eine Array mit 10 leeren Einträgen. - Diese Kannst du mit deiner Schleife befüllen:

for (int i = 0; i < ergebnis1.length; i++) {
   ergebnis1[i] = scn.nextInt();
}


Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten