Array einlesen und ausgeben

A

AbsolutBeginner

Mitglied
Hallo liebe Leute!

Zunächst wollte ein Array von der Konsole aus einlesen und ausgeben::
import java.util.Arrays;
import java.util.Scanner;

public class TestOne {

    public static void main(String[] args) {

        int x = 0;
        Ergebnis P = new Ergebnis(); // Klasse Ergebnis mit 2 Untermethoden
        Scanner input = new Scanner (System.in);

        System.out.println("Länge des ersten Array: ");
        x = input.nextInt();

        System.out.println("Den Array füllen: ");
        int[] y = new int [x]; // y wird auf Länge von dem eingegebenen x gesetz
        readInArray(x); // y soll zurückgegeben werden
        System.out.println(Arrays.toString(y));
        P.setArrayOne(y);

        /*System.out.println("Länge des zweiten Array: ");
        x = input.nextInt();

        System.out.println("Den Array füllen: ");
        int[] y = new int [x];
        readInArray(x);
        System.out.println(Arrays.toString(y));
        P.setArrayOne(y);

        P.vergleich();
        System.out.println(Arrays.toString(P.Summe()));*/

    }

    public static int[] readInArray(int x) {
        int[] y = new int [x];
        int j;
        for (int i=0; i<x; i++) {
            Scanner input = new Scanner (System.in);
            j = input.nextInt();
            y[i] = j;
        }
        return y;
    }
}

Und das habe ich dann als Ausgabe:

Java:
Länge des ersten Array:
3
Den Array füllen:
1
2
3
[0, 0, 0]

Warum werden die Speicherplätze in dem Array nach der Eingabe immer mit dem Wert 0 belegt? Was mache ich falsch?
 
J

Joreyk

Bekanntes Mitglied
Java:
readInArray(x); // y soll zurückgegeben werden
        System.out.println(Arrays.toString(y));
readInArray x liefert dir ein Array zurück und das schießt ins leere und dann Schreibst du int y das im moment diesen Status hat
Java:
int[] y = new int [x];

und das is leer


füg mal System.out.println(y) oben ein

und unten in deiner Methode bevor du return machst

da bekommst du die "Referenz" also zeiger Auf ein Objekt und dann kannst du sehen
wenns gleich ist dann gehts um das gleiche Objekt wenn nicht dann sind das 2 verschiedene
 
A

AbsolutBeginner

Mitglied
Java:
Länge des ersten Array:
3
Den Array füllen:
[I@73f792cf
1
2
3
[I@2ed94a8b
[0, 0, 0]

Ähmm. Dann sind das zwei verschiedene ... oder? Ich verstehe das aber trotzdem nicht. Sorry
 
J

Joreyk

Bekanntes Mitglied
ja das ist richtig dass es 2 verschiedene

Java:
y soll zurückgegeben werden
bei diesem kommentar hast du einen DenkFehler

nur weil oben ein Y array ist
und unten auch ein Y array ist heist es nicht dass es die gleichen sind

Java:
readInArray(x);
diese Zeile gibt dir irgendein array zurück aber es steht links kein " variable = " also wird das array weg geworfen

was du jetzt MÖCHTEST ist es

" yoben ist gleich dem Rückgabewert von readInArray"
 
A

AbsolutBeginner

Mitglied
:D
Java:
y = readInArray(x);

Länge des ersten Array:
4
Den Array füllen:
1
2
3
4
[1, 2, 3, 4]

... Magic - it's a kind of magic ... Aber warum akzeptiert der Compiler das nicht als eine und die gleiche Variable?

Und vielen lieben Dank.
 
J

Joreyk

Bekanntes Mitglied
naja das ist sozusagen das Lebens Umfeld der Variable

da gibts Lokale .. Globale Variablen und noch eins was ich vergessen hab
Das kurze Leben einer lokaler Java Variable (mein-javablog.de)

probier das mal aus ob ein Fehler kommt und dann google mal was Lokale Variablen sind und in wie lang diese "Existieren"
bzw warum kommt hier kein Fehler vom Compiler
Java:
public void test(int x){
for(int i = 0; i < x ; i++){
  
}
for(int i = 0; i < x ; i++){
  
}
}




aber warum kommt hier schon ein Fehler?
Java:
public void test2(int x){
int x = 0;
int x = 2;
}
 
A

AbsolutBeginner

Mitglied
Lokale V exisitiert nur innerhalb der Methode, wo sie initialisiert wurde. Meinst du das? (Ist es ok, wenn ich dich duze?). Abar wozu dann return? Auch wenn diese V lokal ist, ich gebe die doch zurück? Ich dachte, dass beim Aufrufen einer Methode in main der Output ebendieser Methode schon irgendwo zwischengespeichert ist und für weitere "Manipulationen" automatisch verfügbar ist. Für mich sieht das y = readInArray(x); irgendwie doppelt gemoppelt aus. Aber ich sehe ein, das bei mir das grundsetzliche Verstehen von Abläufen falsch ist, sowohl Syntax von Java als auch Semantik.

Vielen dank nochmals, muss erst mal probieren, das zu verdauen.
 
J

Joreyk

Bekanntes Mitglied
Lokale V exisitiert nur innerhalb der Methode, wo sie initialisiert wurde. Meinst du das? (Ist es ok, wenn ich dich duze?). Abar wozu dann return? Auch wenn diese V lokal ist, ich gebe die doch zurück? Ich dachte, dass beim Aufrufen einer Methode in main der Output ebendieser Methode schon irgendwo zwischengespeichert ist und für weitere "Manipulationen" automatisch verfügbar ist. Für mich sieht das y = readInArray(x); irgendwie doppelt gemoppelt aus. Aber ich sehe ein, das bei mir das grundsetzliche Verstehen von Abläufen falsch ist, sowohl Syntax von Java als auch Semantik.

Vielen dank nochmals, muss erst mal probieren, das zu verdauen.

Füg unten nochmal das System.out.println(y) ein

und oben schreibst du
System.out.println (readArray(x)) ein
und schau mal was da raus kommt
 
A

AbsolutBeginner

Mitglied
also mit oben und unten hab nicht ganz verstanden, wo genau ...

Java:
System.out.println("Länge des ersten Array: ");
        x = input.nextInt();
        
        System.out.println(readInArray(x));

        System.out.println("Den Array füllen: ");
        int[] y = new int [x]; // y wird auf Länge von dem eingegebenen x gesetz
        y = readInArray(x); // y soll zurückgegeben werden
        System.out.println(Arrays.toString(y));
        P.setArrayOne(y);
        
        System.out.println(y);

dann kommt folgendes:

Java:
Länge des ersten Array:
3
1
2
3
[I@73f792cf
Den Array füllen:
1
2
3
[1, 2, 3]
[I@2ed94a8b
 
J

Joreyk

Bekanntes Mitglied
Java:
public class TestOne {

    public static void main(String[] args) {



        System.out.println("Den Array füllen: ");
        int x = 5;
        System.out.println(readInArray(x));


    }

    public static int[] readInArray(int x) {
        int[] y = new int [x];
        for (int i=0; i<x; i++) {

            y[i] = i;
        }
        System.out.println(y);
        return y;
    }
}

so hatte ich es gemeint



ich hab den rest nur raus gelöscht dass es übersichtlich ist.. du kannst dein Zeug natürlich noch drin behalten
 
J

Joreyk

Bekanntes Mitglied
Den Array füllen:
2
[I@2cb4c3ab
[I@2cb4c3ab


sowas wird raus kommen nur was bedeutet das?

dazu findest du sicher was im internet mit Lokale Variablen...Referenzen....Globale Variablen
 
A

AbsolutBeginner

Mitglied
😩 ... Das es das gleiche Objekt ist, also die gleiche Variable (?) Okey, ich muss darüber bisschen meditieren 😂 ...

Ich verstehe zwar den Grundgedanken hinter diesen Unterscheidungen. Nur kann ich das nicht syntaktisch korrekt ausdrücken.

Danke ✋
 
J

Joreyk

Bekanntes Mitglied
Eine Variable enthält eine Referenz

public int[] gibt eine Referenz auf ein Array Zurück

sobald keine Variable mehr auf eine Referenz zeigt wird die Referenz weg geworfen
 
mihe7

mihe7

Top Contributor
Um das ganze vielleicht nochmal etwas ausführlicher zu beschreiben: Objekte geistern irgendwo im Hauptspeicher rum. Damit wir sie im Programm bequem ansprechen können, speichern wir einen Verweis auf das Objekt (d. h. auf die Stelle im Hauptspeicher, an der das Objekt "lebt") in einer Variablen.

Die Lebensdauer einer Variablen ist nicht das gleiche wie die Lebensdauer eines Objekts. Beispiel:
Java:
public void methode() {
    String x = new String("ABC"); // neues Objekt vom Typ String, Adresse wird lokaler Variablen x zugewiesen.
    { // Block
        String y = x;  // die in x gespeicherte Adresse wird y zugewiesen
    }
    // y ist tot, das Objekt lebt weiter
    System.out.println(x);
}

Jetzt die Frage: wie lange lebt das Objekt?

Stellen wir uns mal vor, so ein Objekt würde ewig leben. Nicht nur, dass wir dann sehr schnell keinen Speicher mehr zur Verfügung hätten, es würde auch einfach viel Müll entstehen, denn nach dem Verlassen der Methode methode() können wir das Objekt nicht mehr verwenden, weil es nicht mehr erreichbar ist, da x außerhalb nicht existiert.

Diese Überlegung nutzt nun der Müllsammler (Garbage Collector) von Java: nur die Objekte, die noch erreichbar sind, werden noch benötigt, alles andere kann weg.

Im Code von @Joreyk, Zeile 21, wird nun der Wert von y, d. h. die Adresse auf das int-Array, zurückgegeben. Wenn der aufrufende Code diese Adresse speichert, ist das Array weiterhin erreichbar. Speichert man die Adresse nicht, kann man es nicht mehr erreichen. Damit lebt das Array (für uns unerreichbar) noch eine Zeit lang weiter, bis es der Garbage Collector abräumt.

Alles ganz einfach.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
B Datentypen Werte in einen Array einlesen und danach die beiden höchsten Werte wieder ausgeben Java Basics - Anfänger-Themen 3
T Array einlesen und ausgeben Java Basics - Anfänger-Themen 8
F Characters in int[] Array einlesen und wieder ausgeben Java Basics - Anfänger-Themen 5
I einen text von tastatur in array einlesen und auch ausgeben Java Basics - Anfänger-Themen 1
E Array in funktion einlesen und ausgeben Java Basics - Anfänger-Themen 4
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
C (char) Array einlesen Java Basics - Anfänger-Themen 8
P Array einlesen von Konsole 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
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
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
H text string alle 100 zeichen in ein 1D array einlesen ? Java Basics - Anfänger-Themen 8
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
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
P Eine Datei einlesen und in einem Array speichern Java Basics - Anfänger-Themen 11
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
sashady 2D-Array mit Zahlenmuster füllen Java Basics - Anfänger-Themen 4
t2im Java Array-Länge ändern? Java Basics - Anfänger-Themen 22
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
G ImageIcon in Byte-Array ablegen Java Basics - Anfänger-Themen 7
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
A Array Ansprache einer Zelle über Punktnotation? Java Basics - Anfänger-Themen 3
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Häufigkeit einzelner Zahlen in einem Array Java Basics - Anfänger-Themen 6
nonickatall Input/Output Zeichenkette in Array zerlegen Java Basics - Anfänger-Themen 2
E In Array Werte einfügen? Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
OZAN86 Mehrdimensionales Array Java Basics - Anfänger-Themen 4
Yasemin bahar zweidimensionales Array Java Basics - Anfänger-Themen 5
Zeppi Vergleich von Array-Inhalten Java Basics - Anfänger-Themen 14
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
D Zufällige Auswahl aus einem angelegten Array? Java Basics - Anfänger-Themen 10
Zeppi OOP Array in Objekten Java Basics - Anfänger-Themen 4
K Wie kontrolliere ich ob ich die Zahl in meinem Array schon hab? Java Basics - Anfänger-Themen 9
O 2d Array einmal Eins Java Basics - Anfänger-Themen 2
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
R Array mit Unter- und Obergrenze ganze Zahlen dazwischen erscheinen nicht Java Basics - Anfänger-Themen 1
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
J null exception Array Java Basics - Anfänger-Themen 5
H Array Elemente Java Basics - Anfänger-Themen 17
J Array Actionlistener Java Basics - Anfänger-Themen 9
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
T Methode um Array mit for-each-Schleife auszulesen Java Basics - Anfänger-Themen 7
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
I Array in umgekehrter Reihenfolge - Erklärung - Java Basics - Anfänger-Themen 3
T Zahl in Array ersetzen Java Basics - Anfänger-Themen 2
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
I Letztes, erstes Element vom Array Java Basics - Anfänger-Themen 9
J Array an Combobox übergeben Java Basics - Anfänger-Themen 5
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1

Ähnliche Java Themen


Oben