Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich soll im Zuge einer Aufgabe ein Array mit private int[] array = {1,2,3,4,5,6}; erstellen und dieses dann an den Konstruktor eines Objektes übergeben, in welcher damit weitergearbeitet wird. Also quasi so: Klasse k = new Klasse(array);
Nur habe ich nun das Problem, dass die Main Methode ja static ist, das Array dagegen aber non-static. Wie kriege ich es hin, dass ich innerhalb der Main Methode dieses Array auch benutzen kann? Ich darf das Array nicht als static deklarieren.
Vermutlich versuchst du das Array als Objektvariable zu deklarieren, das kannst du dann aus der statischen #main nicht aufrufen.
Das Array sollte besser nur lokal sein, also innerhalb der #main deklariert, dann muss es auch nicht static sein.
Vermutlich versuchst du das Array als Objektvariable zu deklarieren, das kannst du dann aus der statischen #main nicht aufrufen.
Das Array sollte besser nur lokal sein, also innerhalb der #main deklariert, dann muss es auch nicht static sein.
Ja das Array soll quasi in der main an das Objekt übergeben werden und dann im Konstruktor der anderen Klasse weiterverwertet werden.
Das Array an den Konstruktor der Klasse von dem ich eine Instanz mache (vielleicht falsch ausgedrückt, aber ihr wisst hoffentlich was ich meine ) sollte ja eigentlich so gehen:
Code:
Klasse k = new Klasse(array);
Nur steht in der Aufgabenstellung, dass ich das Array so deklarieren muss:
Code:
private int [] array = {1,2,3,4,5};
Berichtigt mich, falls ich das falsch verstanden habe, wie man eine Variable an den Konstruktor einer Klasse übergibt.
Ich poste nochmal meine ganze Hauptklasse sozusagen.
Code:
public class Mengen {
private int[] set = { 1, 1, 2, 4, 5 };
public static void main(String[] args) {
IntSet s = new IntSet(set);
IntSet h = new IntSet(set);
}
}
public class Mengen {
private int[] set = { 1, 1, 2, 4, 5 };
public static void main(String[] args) {
Mengen myApp = new Mengen();
IntSet s = new IntSet(myApp.set);
IntSet h = new IntSet(myApp.set);
}
}
So wie mrBrown habe ich es jetzt auch gemacht und es funktioniert alles soweit.
Jetzt habe ich nur noch eine Verständnisfrage:
Innerhalb meiner Klasse IntSet habe ich eine Methode public void addAll(IntSet set){, welche ein Array erhält, dass ein überschriebenes (und leicht verändertes) set ist und parallel dazu über eine zweite Instanz ein weiteres Array bekommt und diese aufaddieren soll.
Meine Frage ist, wie kann ich jetzt mit diesem Array set weiterarbeiten? Ich kenne diese Übergabe methodenName(KlassenName variable) noch nicht. Leider kann ich mit der Variable in der Form nicht weiterarbeiten. z.B. funktioniert set.length nicht mehr, da set anscheinend kein richtiges Array mehr ist
Ist evtl etwas wirr geschrieben, deshalb hier nochmal die Methode (set2 soll dann eigentlich das zweite Array sein, ich muss mir aber noch überlegen wie ich das als zweite Instanz da rein kriege ):
Code:
public void addAll(IntSet set) {
int[] result = new int[set.length + set2.length];
System.arraycopy(set2, 0, result, set.length, result.length);
int[] test = Arrays.copyOf(result, result.length);
}
Bis jetzt ist unklar, was du machen möchtest? Arrays aufaddieren?? Kannst du es vielleicht natürlichsprachlich umschreiben, ohne Fachchinesisch einzubauen (wo es nicht eingebaut werden sollte).?
Ich rate einfach mal, aber übernehme keine Garantie für Schäden :
Java:
package javaapplication;
import java.util.*;
/**
* @author DW on 05.27.2016
*/
public class Temp {
private int[] array;
public Temp(int[] array) {
this.array = array;
computateArray();
}
public Temp() {
this(new int[]{1, 2, 3, 4, 5, 6});
}
public static void main(String[] args) {
Temp t = new Temp();
}
private void computateArray() {
int[] three = new int[array.length];
for (int i = 0; i < array.length; i++) {
three[i] = array[i] << 1;
}
System.out.println("three = " + Arrays.toString(three));
}
}
Der Witz ist, das mit private int[] array = {1,2,3,4,5,6}; das Array schon initialisiert würde, und this(array); nicht funktionieren würde, denn: cannot reference array before supertype constructor has been called.
ich soll im Zuge einer Aufgabe ein Array mit private int[] array = {1,2,3,4,5,6}; erstellen und dieses dann an den Konstruktor eines Objektes übergeben, ...