Array einlesen von Konsole

pureGewalt

Mitglied
Schönen Sonntag allen,

ich hab ein problem beim Einlesen eines Arrays als Methode und zwar immer wenn ich das Programm ausführe kommt diese Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at ArraySortOderMax.arrayEinlesen(ArraySortOderMax.java:37)
at ArraySortOderMax.main(ArraySortOderMax.java:18)


Leider verstehe ich in meinem Code nicht wo der Fehler ist .. hoffe ihr könnt mir dabei helfen :)

Java:
import java.util.Scanner;

public class ArraySortOderMax {

    public static void main(String[] args) {

        // Variablen Deklaration
        int n = 0;
       
        // Scanner aufrufen
        Scanner in = new Scanner(System.in);
       
        // Funktion für Array einlesen
        System.out.println("Hallo, bitte geben Sie die größe Ihres Arrays ein: ");
        n = in.nextInt();
       
        System.out.println("Geben Sie nun nach und nach Zahlen zum füllen ein: ");
        arrayEinlesen(n);

        // Ausgabe
        System.out.println(arrayEinlesen(n));

    }// ende von main

    // Platz für Methoden
    public static int[] arrayEinlesen(int n) {
        //Deklaration
        int[] a = new int[n];
        int j = 0;
        for (int i = 0; i <= n; i++) {
            Scanner in = new Scanner(System.in);
            j = in.nextInt();
            i = a[j];

        }
            //Rückgabe
            return a;
    }

}// ende von ArraySortOderMax


Liebe Grüße
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Beim Posten von Code bitte Code-Tags verwenden: [code=Java]Dein Code[/code]

Zur Frage:
Java:
int[] a = new int[n];
int j = 0;
for (int i = 0; i <= n; i++) {
Die erste Zeile erstellt ein Array mit n Elementen. Die Indizes von Arrays beginnen in Java mit 0, d. h. es gibt die Elemente a[0] bis a[n-1]. In Deiner for-Schleife iterierst Du aber bis einschließlich n, das Element a[n] liegt jedoch außerhalb der Indexgrenzen.
 

pureGewalt

Mitglied
Beim Posten von Code bitte Code-Tags verwenden: [code=Java]Dein Code[/code]



Zur Frage:
Java:
int[] a = new int[n];
int j = 0;
for (int i = 0; i <= n; i++) {
Die erste Zeile erstellt ein Array mit n Elementen. Die Indizes von Arrays beginnen in Java mit 0, d. h. es gibt die Elemente a[0] bis a[n-1]. In Deiner for-Schleife iterierst Du aber bis einschließlich n, das Element a[n] liegt jedoch außerhalb der Indexgrenzen.

Sorry danke für den Hinweis! Habe es abgeändert.

Genau, und wenn ich dann vom Nutzer beispielsweise 5 eingeben lasse, dann ist mein Array 5 Elemente groß oder? aber in der ersten forschleife wird mein i++ gemacht somit, startet mein Index bereits bei 1 und nicht bei 0. Doch wie lasse ich dann meinen Index bei 0 beginnen? Wenn ich i verringern würde, würde es ja bei jedem schleifen durchlauf passieren.
 

mihe7

Top Contributor
in der ersten forschleife wird mein i++ gemacht somit, startet mein Index bereits bei 1 und nicht bei 0.
Du solltest Dich ein wenig mehr mit den Grundlagen beschäftigen. Folgendes:
Java:
for (int i = 0; i < n; i++) {
    doSomething(i);
}

ist äquivalent zu

Java:
int i = 0;
while (i < n) {
    doSomething(i);
    i++;
}
Nachtrag: habe dem doSomething noch den Parameter i spendiert, damit es noch deutlicher wird.
 

pureGewalt

Mitglied
Du solltest Dich ein wenig mehr mit den Grundlagen beschäftigen. Folgendes:
Java:
for (int i = 0; i < n; i++) {
    doSomething(i);
}

ist äquivalent zu

Java:
int i = 0;
while (i < n) {
    doSomething(i);
    i++;
}
Nachtrag: habe dem doSomething noch den Parameter i spendiert, damit es noch deutlicher wird.

Leider verstehe ich es nicht, ich hab meinen Code nochmal abgeändert für die Methode:

Java:
public static int[] arrayEinlesen(int n) {
        
        //Deklaration
        int[] a = new int[n];
        int i = 0; 
        int eingabe = 0;
        
        while(i < n) {
            Scanner in = new Scanner(System.in);
            eingabe = in.nextInt();
            eingabe = a[i];
            
            i++;
            
        }

            //Rückgabe
            return a;

Doch jetzt kann ich viele Zahlen eingeben bis es schließlich irgendwas ausgibt. Ich verstehe da leider auch den Fehler nicht einmal mehr. Für mich macht das irgendwie so sinn, aber irgendwie klappt es nicht.
Ich mache meinen Array so groß wie das eingelesene n, initialisiere i und meine eingabe, solange i < n ist, dann nochmal vom Benutzer die Zahlen eingeben lassen womit das Array befüllt werden soll, dann diese eingabe an den Index von 0 - n jeweils immer zuweisen. Danach i erhöhen.
 

mihe7

Top Contributor
Schau Dir mal die Zuweisungen an.
Java:
            eingabe = in.nextInt();
            eingabe = a[i];
Fällt Dir hier etwas auf?
 

mihe7

Top Contributor
In Deinem Code sind noch mehr Fehler, zum Beispiel:
Java:
        System.out.println("Geben Sie nun nach und nach Zahlen zum füllen ein: ");
        arrayEinlesen(n);

        // Ausgabe
        System.out.println(arrayEinlesen(n));
Hier rufst Du zweimal arrayEinlesen(n) auf. Daher wirst Du auch zweimal n Eingaben machen müssen. Außerdem wirst Du eine etwas "kryptische" Ausgabe erhalten.

Die Methode arrayEinlesen(n) gibt ein Array zurück (genauer: sie gibt die Adresse des Arrays zurück). Das kannst Du speichern:
Java:
        System.out.println("Geben Sie nun nach und nach Zahlen zum füllen ein: ");
        int[] eingaben = arrayEinlesen(n);
Die Ausgabe eines Arrays funktioniert nicht einfach über System.out. Entweder gibst Du in einer Schleife jedes Element aus oder Du verwendest java.util.Arrays:
Java:
        System.out.println("Geben Sie nun nach und nach Zahlen zum füllen ein: ");
        int[] eingaben = arrayEinlesen(n);
        System.out.println(Arrays.toString(eingaben));
Natürlich könnte man die letzten beiden Zeilen auch zusammenlegen, aber wir wollen es nicht gleich übertreiben :)
 

pureGewalt

Mitglied
Schau Dir mal die Zuweisungen an.
Java:
            eingabe = in.nextInt();
            eingabe = a[i];
Fällt Dir hier etwas auf?

Was ist hier das genaue Problem? Darf ich es nicht zweimal zuweisen oder muss das einlesen davon außerhalb der Methoden stehen?

In Deinem Code sind noch mehr Fehler, zum Beispiel:
Java:
        System.out.println("Geben Sie nun nach und nach Zahlen zum füllen ein: ");
        arrayEinlesen(n);

        // Ausgabe
        System.out.println(arrayEinlesen(n));
Hier rufst Du zweimal arrayEinlesen(n) auf. Daher wirst Du auch zweimal n Eingaben machen müssen. Außerdem wirst Du eine etwas "kryptische" Ausgabe erhalten.

Die Methode arrayEinlesen(n) gibt ein Array zurück (genauer: sie gibt die Adresse des Arrays zurück). Das kannst Du speichern:
Java:
        System.out.println("Geben Sie nun nach und nach Zahlen zum füllen ein: ");
        int[] eingaben = arrayEinlesen(n);
Die Ausgabe eines Arrays funktioniert nicht einfach über System.out. Entweder gibst Du in einer Schleife jedes Element aus oder Du verwendest java.util.Arrays:
Java:
        System.out.println("Geben Sie nun nach und nach Zahlen zum füllen ein: ");
        int[] eingaben = arrayEinlesen(n);
        System.out.println(Arrays.toString(eingaben));
Natürlich könnte man die letzten beiden Zeilen auch zusammenlegen, aber wir wollen es nicht gleich übertreiben :)

Danke für deine Hilfe, es funktioniert jetzt. Was ich noch nicht ganz verstanden habe, mit dem int[]eingaben = arrayEinlesen(n); ich weise dann die Methode dem Array "eingaben" zu um es dann mit dem "toString" ausgeben zu lassen, ich dachte die ganze Zeit das wenn ich die Methode einfach aufrufe "arrayEinlesen();" das dann dort einfach der rückgabewert steht und ich diesen mir dann einfach hinschreiben lassen kann und das mein Array dann wäre.

Vielen Dank nochmal!
 

mihe7

Top Contributor
Was ist hier das genaue Problem? Darf ich es nicht zweimal zuweisen oder muss das einlesen davon außerhalb der Methoden stehen?
Du hast eine Variable eingabe. Die erste Zeile liest einen int-Wert vom Scanner und weist der Variablen eingabe den eingelesenen Wert zu. Anschließend weist die zweite Zeile der Variablen eingabe das i-te Element von a zu. Sprich: Du überschreibst die Varaible eingabe.

Du willst aber doch die Eingaben des Benutzers im Array speichern, dann musst Du schreiben:
Java:
            eingabe = in.nextInt();
            a[i] = eingabe;
Jetzt wird in der ersten Zeile der vom Scanner zurückgegebene Wert in der Variablen eingabe gespeichet, dann wird in der zweiten Zeile das i-te Element von a mit dem Wert der Variablen eingabe überschrieben.

ich weise dann die Methode dem Array "eingaben" zu um es dann mit dem "toString" ausgeben zu lassen,
Du weist nicht die Methode zu, sondern den Rückgabewert. D. h. die Methode arrayEinlesen wird aufgerufen. Der Computer arbeitet die Methode ab und liefert als Ergebnis ein int-Array. Und dieser Rückgabewert wird anschließend der Variablen eingaben zugewiesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
C (char) Array einlesen Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
J Integer in Array einlesen Java Basics - Anfänger-Themen 14
C Zeilen in Array einlesen und splitten? Java Basics - Anfänger-Themen 17
stylegangsta Input/Output Hat eclipse eine Macke oder mein Code Array Datei einlesen Java Basics - Anfänger-Themen 5
N Mehrdimensionales float Array aus .txt-Datei einlesen? Java Basics - Anfänger-Themen 17
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
G Erste Schritte Textdatei einlesen und in Array speichern Java Basics - Anfänger-Themen 5
A Datei in Array einlesen Java Basics - Anfänger-Themen 6
S Zeilenweises Einlesen in Array Java Basics - Anfänger-Themen 2
K Input/Output 6000 Zeilen einlesen und String-Array vergleichen? Java Basics - Anfänger-Themen 1
H Zeichenketten einlesen und dann in Array speichern Java Basics - Anfänger-Themen 6
C Einlesen in Array von Textdatei sehr langsam Java Basics - Anfänger-Themen 7
J Integer Werte in Array einlesen Java Basics - Anfänger-Themen 6
D Erste Schritte In Array einlesen Java Basics - Anfänger-Themen 15
B zahlenfolge einlesen und in array umwandeln Java Basics - Anfänger-Themen 7
M Methoden Daten aus einer SQL-Abfrage in eine mehrdimensionales Array einlesen Java Basics - Anfänger-Themen 7
T Anfänger hat Probleme mit Array einlesen ;) Java Basics - Anfänger-Themen 13
B Datentypen Werte in einen Array einlesen und danach die beiden höchsten Werte wieder ausgeben Java Basics - Anfänger-Themen 3
Semox Datentypen Einlesen von char in Array schlägt unerwartet fehl Java Basics - Anfänger-Themen 4
X Zahlenfolge in Int-Array einlesen? Java Basics - Anfänger-Themen 7
B aus .txt in array einlesen Java Basics - Anfänger-Themen 29
E Einlesen einer int und speichern in einem Array Java Basics - Anfänger-Themen 7
S Unbekannte Daten einlesen, speichern und in einem byte Array speichern Java Basics - Anfänger-Themen 3
S CSV Datei in Array einlesen Java Basics - Anfänger-Themen 25
P Zahlen aus Datei in Array einlesen Java Basics - Anfänger-Themen 21
B Strings aus Array einlesen klappt nicht Java Basics - Anfänger-Themen 5
A datei in ein 2dimensionales array einlesen? Java Basics - Anfänger-Themen 9
O String in array einlesen alle x zeichen Java Basics - Anfänger-Themen 15
W String in ein String-Array einlesen ? Java Basics - Anfänger-Themen 2
K Strings in Array einlesen Java Basics - Anfänger-Themen 3
G Datei einlesen und in einem Array ablegen? Java Basics - Anfänger-Themen 5
T Array einlesen und ausgeben Java Basics - Anfänger-Themen 8
H text string alle 100 zeichen in ein 1D array einlesen ? Java Basics - Anfänger-Themen 8
F Characters in int[] Array einlesen und wieder ausgeben Java Basics - Anfänger-Themen 5
J Text in vorgegebenes Array einlesen Java Basics - Anfänger-Themen 2
Jen Array einlesen, Int und Char Java Basics - Anfänger-Themen 57
J einlesen von datei, float und array und und und. Java Basics - Anfänger-Themen 7
M Datei einlesen & in Array speichern Java Basics - Anfänger-Themen 4
L zahlen in mehrdimensionales array einlesen Java Basics - Anfänger-Themen 3
E Array ueber Tastatur einlesen Java Basics - Anfänger-Themen 2
H Codetabelle Einlesen und in Array speichern Java Basics - Anfänger-Themen 1
I einen text von tastatur in array einlesen und auch ausgeben Java Basics - Anfänger-Themen 1
S Einlesen einer Datei und ins Array speichern Java Basics - Anfänger-Themen 11
G Inhalt einer Textdatei in ein Array einlesen Java Basics - Anfänger-Themen 2
C Frage zu: String einlesen -> Array von Chars erhalten Java Basics - Anfänger-Themen 4
E Array in funktion einlesen und ausgeben Java Basics - Anfänger-Themen 4
P Eine Datei einlesen und in einem Array speichern Java Basics - Anfänger-Themen 11
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben