Gemeinsame Schnittmenge zweier Arrays ausgeben

Hbx8x

Aktives Mitglied
Hey, wenn ich ein Array int [] a gegeben habe und folgendes array deklariere:

int [] schnitt = new int [a.length];

Dann wird das Array mit keinen Werten befüllt oder? Also es handelt sich lediglich um ein leeres Array in dem nun die gleiche Menge wie in int [] a befüllt werden kann.
 
Also es geht um eine Aufgabe bei der zwei Arrays int [] a und int [] b gegeben sind, wobei nun die gemeinsamen Mengeninhalte in einem neuen Array angegeben werden sollen. Ich habe die Musterlösung zur Altklausur im Anhang hochgeladen und habe eine Frage zur Zeile 1 und 2. Handelt es sich bei dem array um das array a oder array b? Denn der Methode werden ja laut Zeile 13 das array b mitgegeben, was wiederum dann in der Methode aus Zeile 1 mit a umgeschrieben wird. Also nicht zu verwechseln mit dem array a aus der Aufgabenstellung. Letztendlich ist dann das array aus

for ( int tmp: a)

das array b ? Ich komme hier irgendwie durcheinander ..
 

Anhänge

  • gemeinsame schnittmenge.png
    gemeinsame schnittmenge.png
    31,7 KB · Aufrufe: 22
Das kann so benannt werden, wie man will. Die Methode hätte auch so lauten können:

Java:
static boolean isIn(int[] myArray, int e) {
  for (int tmp : myArray) 
    if (tmp == e)
      return true;
  return false;
}

Die for-Schleife ist übrigens eine erweiterte for-Schleife. Man hätte es auch so schreiben können:
Java:
static boolean isIn(int[] myArray, int e) {
  for (int i = 0; i < myArray.length; i++)
    if (myArray[i] == e)
      return true;
  return false;
}
 
Und wieso verwendet der damalige Tutor dann a in der Methode, obwohl doch in der Aufgabenstellung int [] a und int [] b die zwei Arrays sind die auf die gemeinsame Schnttmenge überprüft werden soll. Also das bringt einen irgendwie durchander wenn man die Musterlösung nachvollziehen will. Also man sollte doch schon etwas klug die variablennamen wählen und dann ausgerchnet a ..

naja vielen dank.
 
Das gilt aber nicht für globale Variablen oder? Also Variablen die ich in der main deklariere.
Wenn sie in der main-Methode deklariert wäre, wäre sie ja eine lokale Variable.

Eigentlich gibt es in Java keine globalen Variablen, aber was dem am nächsten kommt sind Klassenvariablen und Instanzvariablen, die außerhalb von Methoden deklariert werden. Solche Variablen können aber von lokalen Variablen überdeckt werden. Das heißt, dass die Klassen- oder Instanzvariable und die lokale Variable während der Ausführung der Methode gleichzeitig existieren, aber die Klassenvariable ist innerhalb der Methode nicht ohne weitere Qualifizierung ansprechbar. Beispiel:
Java:
public class ScopeDemo {
    static int a = 1;

    public static void main(String[] args) {
        System.out.println(a); // Ausgabe: 1
        int a = 2;
        System.out.println(a); // Ausgabe: 2
        System.out.println(ScopeDemo.a); // Ausgabe: 1
    }

}
 
Noch hinzuzufügen ist noch, dass auch so etwas möglich ist:
Java:
public class ScopeDemo {
	static void wide() {
		System.out.println(a);
	}

	static int a = 1;

	public static void main(String[] args) {
		System.out.println(a); // Ausgabe: 1
		int a = 2;
		System.out.println(a); // Ausgabe: 2
		System.out.println(ScopeDemo.a); // Ausgabe: 1
	}
}


Der (deklarative) Scope von static a umfasst die komplette Klasse. Der (definierte) Scope erstreckt sich aber nur ab der Deklaration von a, so dass wir hier Probleme mit b bekommen:
Java:
public class ScopeDemo {
	
	static int b = a+1;
	
	static void wide() {
		System.out.println(a);
	}

	static int a = 1;

	public static void main(String[] args) {
		System.out.println(a); // Ausgabe: 1
		int a = 2;
		System.out.println(a); // Ausgabe: 2
		System.out.println(ScopeDemo.a); // Ausgabe: 1
	}
}
 

Zurück
Oben