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.
Hallo,
ich habe eine technische Frage:
Wenn ich ein Array der Größe 9 habe, bestehend aus 8 Zahlen von 1 bis 9 , wie kann ich dann die Zahl finden,die fehlt. Ich kann ja eine for Schleife anlegen und dann mit if schachteln, wobei ich dann jeweils prüfen muss ob an der Stelle i im Array eine 1 ist und eine 2 und eine 3 usw.
Geht das besser?
Bitte was??? Ich verstehe die Frage nicht wirklich!
Du hast also ein Array der Größe '9', sprich Indizes von 0 - 8.
Und Deine acht Zahlen stehen jetzt wo?
Ist "irgendwo" ein Index frei ??
Wenn du die fehlende Zahl an der leeren Array-Position speichern sollst, benötigst du natürlich doch ein if. In der ursprünglichen Aufgabenstellung stand davon aber nichts.
public static void fehlenderWert(int [] a) {
int summe=0;
int index=0;
int zahl=0;
for(int i=0; i<a.length; i++) {
if(a[i]==0) index=i;
summe+=a[i];
}
zahl=45-summe;
a[index]=zahl;
}
class Test {
int i = 1;
static int s = 2;
int f() {
int n = 1;
n += i; // a)
n += s; // b)
n += g(); // c)
return n;
}
static int g() {
int n = 1;
n += i; // d)
n += s; // e)
n += f(); // f)
return n;
}
}
d und f funktionieren nicht. Mir geht es um die Begründung.
zu d)
die statische Methode g existiert schon vor der Varaiblen i. Deshalb kann die Zuweisung nicht erfolgen.
zu f) Methode g existiert auch vor f() deshalb geht es nicht.
Stimmt das?
Das funktioniert nicht, weil du eine unendliche Rekursion hast. Außerdem ist es nicht möglich eine Methode, die nicht als static deklariert wurde direkt aufzurufen, ohne vorher mit new ein Objekt zu erzeugen.
Die unendliche Rekursion ist bei c) und f)
Wenn die erste Funktion die zweite aufruft und die dann wieder die erste und so weiter, ohne dass das ganze je zu einem Ende kommt. Dann stürzt dein Programm ab.
int i = 1;
static int s = 2;
int f() {
int n = 1;
n += i; // a)
n += s; // b)
n += g(); // c)
return n;
}
static int g() {
int n = 1;
n += i; // d)
n += s; // e)
n += f(); // f)
return n;
}
Bei mir sagt IDE bei d)
non-static variable i cannot be referenced from a static context
und bei f)
non-static method f() cannot be referenced from a static context
Was heißt das?
Nun es gibt einen Kontext der sie enthält und n und i, und n und f() stehen direkt in einem statischen Kontext ===> auf den indirekten Objektkontext kann deswegen nicht zugegriffen werden.
Oder halt etwas anders: i und f() sind nicht nicht-objektgebunden.