Eingegebene Zahlen mit Array ausgeben

Hallo1234

Bekanntes Mitglied
Hallo,
würde gerne 6 Zahlen nacheinander eingeben und diese dann von einem Array ausgeben lassen.
Java:
import java.util.Scanner;
public class ArrayUebungen {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        
    /*int[] zahlen = new int[] {21, 52, 3, 4, 45, 6, 7, 8, 9};
    for(int i = 0; i<zahlen.length; i++) {
        System.out.print(zahlen[i]+" ");
    }*/
    
    int zahlenEingeben = 0;
    System.out.println("Gib 6 Zahlen ein: ");
    for(int i = 1; i<=6; i++) {
    zahlenEingeben = s.nextInt();
    }
    
    int[] gibAus = new int[zahlenEingeben];
    for(int j = 0; j<gibAus.length; j++) {
        System.out.println(gibAus[j]);
    
    }
    }
}

MIt diesem Ansatz klappt es nicht. Mir werden nur Nullen ausgegeben. Weiß jemand wo der Fehler ist?
Vielen Dank
 
In Zeile 15 überschreibst Du 6 mal die Variable zahlenEingeben mit dem jeweils eingegebenen Wert. Das ist ja nicht das, was Du willst. Du willst Dir jeden der sechs Werte merken. Dazu könntest Du ein Array verwenden... Überleg mal, wie 🙂
 
Mir werden nur Nullen ausgegeben. Weiß jemand wo der Fehler ist?
Um noch auf genau diese Frage zu antworten:

Du legst ein Integer-Array mit einer Größe ( = Anzahl der Elemente) des in der Variablen "zahlenEingeben" gespeicherten Wertes an (was dem letzten eingegebenen Wert entspricht). Die einzelnen Elemente dieses Arrays werden beim Anlegen mit dem Wert "0" initialisiert. Im nächsten Schritt gibst du alle Elemente aus (die alle den Wert "0" enthalten).

Wie schon geschrieben wurde, möchtest du ein Array der Größe "6" anlegen und die eingegebenen Werte darin speichern.
 
Danke für eure Antworten, obwohl heute Karfreitag ist 🙂
Ich habe versucht, eure Ratschläge umzusetzen, aber es klappt trotzdem nicht. Habe jetzt schon mehrfach herumprobiert und bin fast verzweifelt. Naja, das ist alles, was mir einfällt:
Java:
import java.util.Scanner;
public class ArrayUebungen {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        
    /*int[] zahlen = new int[] {21, 52, 3, 4, 45, 6, 7, 8, 9};
    for(int i = 0; i<zahlen.length; i++) {
        System.out.print(zahlen[i]+" ");
    }*/
    
        
    int[] speicher = new int[6];
    int zahlenEingeben = 0;
    System.out.println("Gib 6 Zahlen ein: ");
    for(int i = 1; i<=6; i++) {
    zahlenEingeben = s.nextInt();
    }
    
    
    int[] gibAus = new int[zahlenEingeben];
    for(int j = 0; j<gibAus.length; j++) {
        System.out.println(gibAus[j]);
    
    
    }   
        
    }
}
 
Die Variable "zahlenEingeben" kann nur einen Wert annehmen. In der Schleife
Java:
    for(int i = 1; i<=6; i++) {
    zahlenEingeben = s.nextInt();
    }
werden zwar sechs Werte eingelesen, aber immer derselben Variablen zugewiesen, die am Ende der Schleife den zuletzt eingegebenen Wert enthält. Du musst die eingegebenen Werte natürlich den einzelnen Elementen des Arrays zuweisen.

Außerdem hast du jetzt zwei Arrays. Du benötigst nur eines.
 
Danke für deine Hilfe. So habe ich es jetzt. Allerdings werden immernoch nur 6 Nullen ausgegeben.
Java:
    int[] speicher = new int[6];
    int zahlenEingeben = 0;
    System.out.println("Gib 6 Zahlen ein: ");
    for(int i = 1; i<=6; i++) {
    zahlenEingeben = s.nextInt();
    speicher = new int[zahlenEingeben];
    }
    
    //int[] gibAus = new int[zahlenEingeben];
    for(int j = 0; j<speicher.length; j++) {
        System.out.println(speicher[j]);
    
    }
 
An dieser Stelle speicher = new int[zahlenEingeben]; erzeugst du jedesmal ein neues (leeres) Array von der Größe der eingegebenen Zahl.

Du sollst einem Element des Arrays etwas zuweisen. Das geht wie beim Zugriff hier System.out.println(speicher[j]); nur als Zuweisung.

Als Beispiel wird hier speicher[0] = 42; dem ersten Element (mit dem Index 0) der Wert "42" zugewiesen.
 
Bin dem Ziel einen kleinen Schritt näher gekommen. Es wird jetzt immer 6 Mal die letzte Zahl ausgegeben.
Java:
int[] speicher = new int[6];
    int zahlenEingeben = 0;
    System.out.println("Gib 6 Zahlen ein: ");
    for(int i = 1; i<=6; i++) {
    zahlenEingeben = s.nextInt();
    speicher = new int[6];
    }
    
    for(int j = 0; j<speicher.length; j++) {
        speicher[j] = zahlenEingeben;
        System.out.println(speicher[j]);
    
    }
Wie schaffe ich es, dass sich das Programm nicht nur auf die letzte eingegebene Zahl beschränkt?
 
versuche es mal ohne die Variable zahlenEingeben. So wie du speicher über den Index j ausgibst kannst du den auch über den Index i füllen.
 
Meinst du so? Da wird dann eine Fehlermeldung angezeigt.
Java:
int[] speicher = new int[6];
    int zahlenEingeben = 0;
    System.out.println("Gib 6 Zahlen ein: ");
    for(int i = 1; i<=6; i++) {
    zahlenEingeben = s.nextInt();
    speicher = new int[6];
    }
   
    for(int j = 0; j<speicher.length; j++) {
        speicher[j] = i; //<---
        System.out.println(speicher[j]);
   
    }
Weil i dort ja nicht bekannt ist.
 
Siehe Kommentare!
Java:
    int[] speicher = new int[6]; // hier erzeugst du ein int-Array der Größe 6
    int zahlenEingeben = 0;
    System.out.println("Gib 6 Zahlen ein: ");
    for(int i = 1; i<=6; i++) {
    zahlenEingeben = s.nextInt(); // hier wird der Inhalt der Variablen jedesmal mit dem eingegebenen Wert überschrieben
    speicher = new int[6]; // hier erzeugst du ein neues int-Array der Größe 6 und überschreibst damit das Ursprüngliche
                           // da dies innerhalb der Schleife passiert, machst du das sechmal.
    }
  
    for(int j = 0; j<speicher.length; j++) {
        speicher[j] = zahlenEingeben; // hier weist du die zuletzt eingegebene Zahl dem j-ten Element des Arrays zu.
        System.out.println(speicher[j]); // und gibst dieses dann anschließend aus
  
    }
 
Vielen Dank für eure Hilfe 🙂
Hier noch mal komplett neu.
Java:
System.out.println("Gib 6 Zahlen ein: ");
        int[] zahlen = new int[6];
        
        for(int i = 0; i<zahlen.length; i++) {
            zahlen[i] = s.nextInt();
            System.out.println(zahlen[i]);
        }
Das einzige Problem ist, dass direkt nach der Eingabe, die Zahl ausgegeben wird. Das liegt natürlich an dem System.out.println in der for-Schleife, aber anders geht es nicht. Außerhalb der Schleife ist i nicht bekannt. In eine Variable kann ich es auch nicht packen, dann wird mir nur die letzte, von allen eingegebenen Zahlen ausgegeben.
 
So jetzt hab ichs xD. Das hat viel zu lange gedauert.
Java:
    System.out.println("Gib 6 Zahlen ein: ");
        int[] zahlen = new int[6];
        
        for(int i = 0; i<zahlen.length; i++) {
            zahlen[i] = s.nextInt();
        }
        for(int j = 0; j<zahlen.length; j++) {
            System.out.println(zahlen[j]);
        }
Ging es euch anfangs auch so, dass ihr manchmal Stunden über die einfachsten Probleme gegrübelt habt?
Oder muss ich mir sorgen machen?
Vielen Dank für eure Hilfe 🙂
 

Neue Themen


Zurück
Oben