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 Forum,
aktuell habe ich für mein Programm einige feste Werte definiert, diese befinden sich in einer Klasse "konstante" und sind
wie folgt definiert:
Code:
public static final int hektar = 500;
nun habe ich aber eine Variable x, die anfangs null ist und im Laufe des Programms mehrfach verändert wird, kann ich diese ebenso definieren und dann im Progammablauf verändern und dennoch auf sie zugreifen?
also in etwa so:
Java:
//in der Klasse variable festlegen:
public static final double[][] x = new double[5][5];
//und dann in einer Funktion nutze ich sie das erstemal:
variable.x[0][2]=4.5;
//in einer weiteren Funktion nutze ich dann den Spaß wieder:
result = 2*variable.x[0][2];
sprich kann ich so array anlegen und es im weiteren verlauf mehrfach ändern?
vielen Dank für eure Hilfe
Thorsten
vielleicht nochmal zum besseren Verständnis, aktuell sehen meine Funktionen so aus, das ichsie wie folgt nach einander abrufe:
Java:
x=funktion1(x);
x=funktion2(x);
es wäre eben aber schön, wenn es reichen würde funktion1(); zu schreiben und x würde geändert.
Das wiederspricht sich an sich schon. Ein Finaler (Statischer) wert, kann nicht mehr verändert werden. Der ist auch nicht dafür vorgesehen verändert zu werden. Alles was final ist, ist eine konstante.
weil mit
> x=funktion1(x);
x quasi gleich bleibt, der Inhalt des Arrays nur geändert wird, kein neues Array erstellt,
kann das alles durchaus funktionieren,
x=funktion(x), so funktioniert es ja, aber ich möchte eben gerne einfach funktion() schreiben, in der Funktion dann das x ansprechen(variable.x), es ändern und dabei belassen.
wäre das möglich wenn ich in einer Klasse eben nicht
public static final double x ..... schreiben würde sondern eben
- vorhin war x noch ein Array, jetzt ein double-Wert,
- x=funktion(x) kann mit einer finalen Variable x unmöglich funktionieren
- public statische Variablen (ganz egal ob final oder nicht) brauchen sowieso nirgends unbedingt Parameter oder Rückgabewert sein,
falls die Methode nur für eine Variable gedacht ist und nicht mehrfach verwendet wird, dann ruhig in der Methode selber auf die statische Variable zugreifen
ingesamt breitest du mit deinen Andeutungen, Widersprüchen und sonstigen Ungenauigkeiten nur ein Chaos ungeklärter Vermutungen aus
teste doch einfach alles, und poste vollständige kleine Test-Programme mit zugehörigen Fehlermeldungen, dann wirds vielleicht klarer
Ja , es ist ja auch ein Array, aber theoretisch müsste es ja das gleiche sein, ob es nun ein Array ist oder ein double oder String Wert. Es geht mir lediglich darum, dass ich diese Werte in einer Klasse definiere:
variablen:
public static int a = 5;
public static String b = "afa";
public static double [][] x = new double [5][5];
mir geht es einfach darum, dass ich diese Werte zur Laufzeit ändern kann.
Okay, worauf ich hinaus will nochmal einfacher hier mit code:
Java:
public class variablen {
public static int x = 5;
public static int a = 4;
public static int b = 0;
}
public static void funktiona()
{
variablen.a = 5*5;
}
public static void funktionb()
{
variablen.a = 10*variablen.a;
}
public static void main(String[] args) {
funktiona();
funktionb();
System.out.println(variablen.a);
}
die Frage, war ob das wirklich geht oder ob das ein Eigentor wird. Aber es geht und funktioniert genauso wie ich das will.
zwischen einem einfachen double und einem double[] oder den meisten komplexeren Objekten besteht der nicht zu vernachlässigende Unterschied, dass ein finaler double in seiner Gesamtheit endgültig ist,
ein finaler double[] kann nicht durch ein anderes double[] ersetzt werden, wohl aber können die einzelnen Werte noch geändert werden,
nimmt man gar eine List oder etwas ähnlich allgemeines als finales Objekt kann man darin quasi das ganze Programm speichern und wieder löschen und ändern, genug Platz für beliebige Daten, da hat final nicht mehr so sehr Aussagekraft