Hallo an alle:
Ich bin hier sowas von neu, daß ich gleich mal mein erstes Posting mache.
Ich habe folgenden Code zu analysieren und die Ausgabe in der Konsole zu bestimmen:
Soweit, sogut.
Bisher ist mir folgendes einigermaßen klar:
In der Mainmethode(zeile 68) wird die Instanz "gg" erzeugt.
Diese ruft standartmässig den Konstruktor(zeile 8) der Klasse "Array_org" auf.
Nun wird ein Array names "int[]y"(zeile 11) deklariert und es bekommt die Werte aus dem Array "myList"
über den Aufruf der Methode "go" zugewiesen.
Die Methode "go"(zeile 18) ruft nun als erstes die Methode "do_operation"(zeile 39) auf, in der als erstes ein Array
namens "x" erzeugt und mit den Werten des Ursprungsarrays "myList" gefüllt wird.
Weiter werden die Variablen "i" und "j" deklariert. "i" wird mit dem Wert 1 und "j" mit dem Wert i+1 also 2 initialisiert.
Die folgende While-Schleife läuft solange, wie "i" kleiner ist, als die Länge des Arrays "x".
In der ersten While-Schleife kommt eine neue While-Schleife die solange läuft, wie j kleiner ist als
die Länge des Arrays "x" dessen Länge = 10 ist, also 10 mal.
Mit der if-Verzweigung(zeile 49) wird nun das Array "x" auf Gleichheit der Laufzeitvariablen "i" und "j" geprüft.
Ist Gleichheit gegeben, wird die LZ-Variable "j" auf den Wert von "NOTHING" also -1 gesetzt.
Danach wird "j" um 1 erhöht, ist dann also 0. Das wird solange durchgeführt, bis "j" den Wert 9
erreicht hat, danach wird der Schleifenrumpf verlassen, "i" um eins erhöht und "j" bekommt den
Wert von "i" +1.
Nun kommt die erste Ausgabe: "[do] x[]={" gefolgt von der Ausgabe des durchlaufabhängigen Wertes
der Elemente des Arrays "x" bzw. "myList". Die for-Schleife läuft 10 mal durch und bricht dann ab.
Bei jedem Durchlauf wird der aktuelle Wert der Elemente vom Array "x" ausgegeben.
Die Verzweigung danach dient nur der Formatierung der Ausgabe.
Als ersten Wert dieser Ausgabe erhalte ich die 9, allerdings fehlt mir für die weiter ausgegebenen Werte die Erklärung wie das zustande kommt und genau da liegt mein Problem!
Wenn irgendjemand weiß wie die weiteren Werte zustande kommen wäre ich für eine Erklärung sehr dankbar.
Ich hoffe ich hab das hier nach den Forenrules gepostet, wenn nicht sorry
Gruß Tom :roll:
Ich bin hier sowas von neu, daß ich gleich mal mein erstes Posting mache.
Ich habe folgenden Code zu analysieren und die Ausgabe in der Konsole zu bestimmen:
Code:
package de.Inf1_KlausurAufgabe1;
public class Array_org
{
public final byte NOTHING = -1;
public int[] myList = {9,0,9,7,5,1,2,4,9,5};
public Array_org()
{
do_operation();
int[] y = go(myList);
for (int i = 0; i < y.length; i++)
{
System.out.println("::y[" +i+ "] = " + y[i]);
}
}
public int[] go(int[] x)
{
int counter = 0;
for (int i = 0; i < x.length; i++)
if (!(x[i] == NOTHING))
counter++;
int[] y = new int[counter];
int j = 0;
for (int i = 0; i < x.length; i++)
{
if (x[i] != NOTHING)
{
y[j] = x[i] * x[i];
j++;
}
}
return y;
}
private void do_operation()
{
int[] x = myList;
int i = 0;
int j = i+1;
while (i < x.length)
{
while (j < x.length)
{
if (x[i] == x[j])
x[j] = NOTHING;
j++;
}
i++;
j = i + 1;
}
System.out.print("[do] x[] = { ");
for (i = 0; i < x.length; i++)
{
System.out.print(x[i]);
if (i != x.length - 1)
System.out.print(", ");
else
System.out.print(" }\n");
}
}
public static void main(String[] args)
{
Array_org gg = new Array_org ();
}
}
Soweit, sogut.
Bisher ist mir folgendes einigermaßen klar:
In der Mainmethode(zeile 68) wird die Instanz "gg" erzeugt.
Diese ruft standartmässig den Konstruktor(zeile 8) der Klasse "Array_org" auf.
Nun wird ein Array names "int[]y"(zeile 11) deklariert und es bekommt die Werte aus dem Array "myList"
über den Aufruf der Methode "go" zugewiesen.
Die Methode "go"(zeile 18) ruft nun als erstes die Methode "do_operation"(zeile 39) auf, in der als erstes ein Array
namens "x" erzeugt und mit den Werten des Ursprungsarrays "myList" gefüllt wird.
Weiter werden die Variablen "i" und "j" deklariert. "i" wird mit dem Wert 1 und "j" mit dem Wert i+1 also 2 initialisiert.
Die folgende While-Schleife läuft solange, wie "i" kleiner ist, als die Länge des Arrays "x".
In der ersten While-Schleife kommt eine neue While-Schleife die solange läuft, wie j kleiner ist als
die Länge des Arrays "x" dessen Länge = 10 ist, also 10 mal.
Mit der if-Verzweigung(zeile 49) wird nun das Array "x" auf Gleichheit der Laufzeitvariablen "i" und "j" geprüft.
Ist Gleichheit gegeben, wird die LZ-Variable "j" auf den Wert von "NOTHING" also -1 gesetzt.
Danach wird "j" um 1 erhöht, ist dann also 0. Das wird solange durchgeführt, bis "j" den Wert 9
erreicht hat, danach wird der Schleifenrumpf verlassen, "i" um eins erhöht und "j" bekommt den
Wert von "i" +1.
Nun kommt die erste Ausgabe: "[do] x[]={" gefolgt von der Ausgabe des durchlaufabhängigen Wertes
der Elemente des Arrays "x" bzw. "myList". Die for-Schleife läuft 10 mal durch und bricht dann ab.
Bei jedem Durchlauf wird der aktuelle Wert der Elemente vom Array "x" ausgegeben.
Die Verzweigung danach dient nur der Formatierung der Ausgabe.
Als ersten Wert dieser Ausgabe erhalte ich die 9, allerdings fehlt mir für die weiter ausgegebenen Werte die Erklärung wie das zustande kommt und genau da liegt mein Problem!
Wenn irgendjemand weiß wie die weiteren Werte zustande kommen wäre ich für eine Erklärung sehr dankbar.
Ich hoffe ich hab das hier nach den Forenrules gepostet, wenn nicht sorry
Gruß Tom :roll: