Java Erläuterung dieses Java-Quellcodeauszuges

estre

Commander
Registriert
Dez. 2005
Beiträge
3.006
Hey,

kann mir jemand erklären was folgender Quellcode bedeutet:
Ich muss dazu sagen, dass ich der absolute Java-Anfänger bin, ich weiß grob, dass hier 10 Elemente eines Arrays eingegeben werden, eine detailliertere Erklärung wäre aber hilfreicher.



Code:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Bitte 10 Ziffern eingeben: ");
int[] a = new int[10];
for(int i=0;i<10;i++)a[i]=Integer.parseInt(br.readLine());

Danke für die Hilfe!

LG
 
Hi,

Code:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//Ein Objekt vom Typ "Buffered Reder wird instanziiert, welches die Eingabe des Nutzers beinhaltet (InputStream des System.in)

System.out.println("Bitte 10 Ziffern eingeben: ");
//Ausgabe "Bitte 10 Ziffern eingeben"

int[] a = new int[10];
//Instanziierung eines Array of Integer mit der Größe "10"

for(int i=0;i<10;i++)a[i]=Integer.parseInt(br.readLine());
//Schleife wird 10 mal durchlaufen und schreibt die geparste ("gestückelte") Eingabe aus dem BufferedReader (ganz am Anfang) Stück für Stück in das Array


Für solche Sachen empfiehlt es sich einfach den Debugger zu nutzen und Schrittweise durchzugehen, dann kommst du von alleine drauf :)

VG,
Mad
 
Zeile1: Es wird ein neuer BufferedReader erzeugt. Dieser kann genutzt werden um Informationen einzulesen, z.b. aus einer Konsoleneingabe.

Zeile2: Es wird eine Nachricht in der Konsole ausgegeben die den Benutzer auffordert 10 Ziffern einzugeben.

Zeile3: Ein neues Integer Array mit der Länge 10 wird erzeugt. Der Index eines Arrays fängt bei 0 an, die Daten können also auf den Positionen 0 bis 9 liegen.

Zeile4: Eine for Schleife wird benutzt um das Array zu füllen. Startend im ersten Feld des Arrays (Index 0) bis zum letzten Feld des Arrays (Index 9 ist das letzte Feld das die Bedingung < 10 erfüllt) werden Daten eingelesen und in das Array geschrieben.
Dazu wird der BufferedReader aufgerufen und die Benutzereingabe wird eingelesen.
Mit Integer.parseInt wird die Eingabe in ein Integer umgewandelt.

Ob es so auch funktioniert weiß ich aber nicht ganz sicher. Sieht für mich gerade so aus als würde man immer die gleiche Zeile einlesen. Müsste man mal gerade laufen lassen um zu gucken ob es so geht.
 
Code:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
Es wird ein BufferedReader mit dem namen "br" erstellt. Dieser holt sich vom InputStreamReader einen Stream, welcher in unserem Fall die Eingabe ist (dafür das System.in).

Code:
System.out.println("Bitte 10 Ziffern eingeben: ");
In die Console wird der Text ausgegeben (System.out dient dazu). Ich würde aber statt println lieber print empfehen da das "ln" am ende bedeutet das noch eine "neue Zeile" eingefügt wird.

Code:
int[] a = new int[10];
Es wird ein neues Objekt erstellt das ein Zahlen-array welcher 11 Felder besitzt.

Code:
for(int i=0;i<10;i++)a[i]=Integer.parseInt(br.readLine());
Hier wird in jedes Feld des Arrays (a) die Eingabe Zeichenweise reinkopiert.
br.readLine bedeutet das die ganze Zeile welche vom Keyboard eingegeben wurde ausgelesen wird.
Integer.parseInt wandelt den Zeichencode in Zahlen um, da br.readLine keine Zahlen liefert (obwohl wir Zahlen eingegeben haben).

Ich würde aber empfehlen die jeweiligen Begriffe in der JavaDoc zu suchen und durchlesen, da die Begriffe BufferedReader, InputStreamReader, usw. sehr schwer zu verstehen sind für Anfänger.
 
Hey,

danke für die schnelle, plausible Erklärung !

Dazu gibt es jetzt noch eine Methode die ich auch nicht ganz verstehe:

Code:
public static int[] sort(int[]a)
    {
        for (int i=0;i<a.length-1;i++)
        {
            int minindex=i;
            for(int j=i+1;j<a.length;j++)
            {
                if(a[minindex]>a[j])minindex=j;
            }
            //int temp=a[minindex];a[minindex]=a[i];a[i]=temp;
        }
        return a;
    }

was stellt dieses minindex dar ? Die Parameterübergabe am Anfang verstehe ich auch nicht ganz :(

Kann es sein, dass dort irgendwelche Zahlen sortiert werden ?

Eine genauere Erläuterung dazu wäre ebenfalls sehr hilfreich -.-

Diese Methode ist ja statisch, d.h. ich muss vorher keine Instanz erzeugen oder ?
Aber worauf wende ich die Methode dann mit der Punktnotation an, etwas direkt auf die Klasse ?

Danke!
 
Als Parameter wird a übergeben, welches vom Typ int[] ist - also ein Array von Ganzzahlen. Dieser wird dann tatsächlich sortiert, und zwar nach dem Selectionsort-Verfahren. (Oder zumindest würde er es, wenn die Zeile "int temp=..." nicht auskommentiert wäre. So passiert gar nichts.)

Und ja, die statische Methode rufst du direkt auf der Klasse auf: (Klassenname).sort(...).
 
Zurück
Oben