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.
Funktion die jedesmal einen um 1 erhöhten Wert zurückliefert
Ich möchte eine Funktion die jedesmal einen um 1 inkrementierten Wert zurückliefert. An und für sich wüsste ich schon wie das geht, allerdings möchte ich es ohne eine globale Variable machen. Ist das möglich? Ich stelle es mir so in der Art vor(das Beispiel funktioniert leider nicht):
Code:
public class CountTest {
public static void main(String[] args) {
System.out.println(count());
System.out.println(count());
System.out.println(count());
}
private static int count() {
int n;
if (n == null) {
n = 0;
} else {
n++;
}
return n;
}
}
public class CountTest {
public static void main(String[] args) {
int x = 0;
System.out.println(x = count(x));
System.out.println(x = count(x));
System.out.println(x = count(x));
}
public static int count(int value) {
return ++value;
}
}
Eine Variable in einer Methode lebt nur so lange die Methode ausgeführt wird. Danach ist sie zerstört.
ich wollte einfach nur wissen ob es auch ohne globale variable geht, es handelt sich ja auch um kein reales Problem, ich probier nur gerade ein bisschen rum und wollte wissen ob es vielleicht auch einen anderen weg gibt.
Ich simuliere das immer (zumindest von der Übersichtlichkeit her), in dem ich die static variable direkt über der Funktion, und nicht ganz oben in der Klasse, definiere.
der Sinn davon ist, dass man schnell sieht, welche Variabeln Klassenvariabeln sind und welche net... wenn man da was reinschmiedet, mitten in ner Klasse über ner Methode.. ich seh den Nutzen davon nicht ?!
Gegen die Konvention mag es ja verstossen aber ich kanns dir dennoch erklären:
Ich organisieren meine Klassen gerne so dass ich tatsächlich "globale" (also von mehreren Methoden verwendete) Variablen oben in der Klasse definiere. Solche members, die von von einer Methode benutzt werden, deklariere ich über der Funktion selbst, denn sie gehört ja quasi zu deren Code und nicht zur Allgemeinheit.
Dies alles gilt natürlich nur für private Variablen.
..Ich organisieren meine Klassen gerne so dass ich tatsächlich "globale"
(also von mehreren Methoden verwendete) Variablen oben in der Klasse definiere..
Die Variablen oben zu definieren entspricht zwar den Code Conventions
aber ich persönlich platziere sie lieber unten.
Der Grund:
Wer das Programm lesen will kann zunächst nichts mit nackten, zusammenhanglosen Variablen anfangen.
Er muss also zuerst zum Code gelangen. Das ist leichter wenn dieser gleich oben erscheint
und die Variablen unten, meine ich mal...
Generell kann man ja seinen Code so schreiben, wie man Ihn am besten lesen / interpretieren kann. Nur bei Teamarbeit muss man natürlich aufpassen, dass nicht jeder macht was er will.
auch bei Einzelarbeit sollte man von anfang an darauf achten, dass man sich an die CodeConventions haltet, weil man kann nie wissen, was mit seinem Code noch alles passiert. Der kann sich später auch für andere Leute als äussert nützlich erweisen, oder vielleicht will man später das Projekt an jemanden anderen übergeben.
...auch bei Einzelarbeit sollte man von anfang an darauf achten, dass man sich an die CodeConventions haltet, weil man kann nie wissen, was mit seinem Code noch alles passiert...
Naja es war ja nur meine persönliche Meinung, daß ich die Variablen lieber unten hab.
Das wird wohl kaum irgendeine bedeutende Rolle für später spielen.