Statisches Array gesucht

Status
Nicht offen für weitere Antworten.

bacmd

Mitglied
Hallo zusammen,

da man variablen mit static in allen Methoden verfügbar machen kann, such ich jetzt ne Möglichkeit ein Array Global verfübar zu machen...

Weis jemand wie das geht?


Vielen Dank schon mal im vorraus!

bacmd
 
Ein Array ist auch eine Variable. Ein Array kannst du auch als static deklarieren:
Code:
public static int[] blaArray = {...};
 
Dank schön!
Aber wenn ich in einer anderen Datei folgendes schreibe:

Code:
System.out.println(blaArray[0]);

Bekomme ich beim kompilieren die Fehlermeldung:

cannot resolve symbol
symbol : variable blaArray
location: class laden
System.out.println(blaArray[0]);

Wenn es jedoch in der selben Datei steht gehts....
 
Da musst du den Klassennamen angeben

Code:
System.out.println(Klasse.blaArray[]);

alternativ kannst du auch ein Objekt benutzen - ist aber nicht üblich, da das Array ja statisch ist.
 
VIELEN DANK!

Das läuft, jedoch hab ich noch ein Problem

Das Programm hat 3 Dateien
-Con.java (Hauptprogramm)
-laden.java
-speichern.java

es gibt eine Textdatei in der Namen drin stehen welche geladen werden sollen und dann wieder geschrieben werden sollen.
Ich lade die Namen in ein Array rein und will das array für bsw. die Datei speicher zur Verfügung stellen.
Läuft das auch über das oben genannte schema ab?
 
Ja, wenn alle Datein im selben Package sind, kannst du auf das Array zugreifen. Wenn nicht, musst du das Package importieren.
 
Ja die sind im selben Package, jedoch wird das Array in der datei laden.java durch die Daten in der TXT Datei gefüllt, aber in speichern steht der zugewisene Wert drin den ich bei public static... angegeben habe
 
Ja, wenn alle Datein im selben Package sind, kannst du auf das Array zugreifen. Wenn nicht, musst du das Package importieren.

Sorry fürs nicht einloggen
 
bacmd hat gesagt.:
Ja die sind im selben Package, jedoch wird das Array in der datei laden.java durch die Daten in der TXT Datei gefüllt, aber in speichern steht der zugewisene Wert drin den ich bei public static... angegeben habe

...und?
 
Hier mal die laden.java

Code:
class laden
{
public static String[] array1 = {"TEST"};
void laden()
{


int i = 0;
LineNumberReader f;
String line;
  try {
		File Datei= new File("namen.txt");
		FileReader fileReader = new FileReader(Datei);

		f = new LineNumberReader(new FileReader(Datei));
  		while ((line = f.readLine()) != null) {
  		}

		BufferedReader reader = new BufferedReader(fileReader);
		String zeile = null;
		String[] array1 = new String[f.getLineNumber()];

		while ((zeile = reader.readLine()) != null)
		{
		array1[i] = zeile;
		i++;

		}
		reader.close();
		menue m = new menue();
		m.auswahl();
		}
	catch(Exception ex)
		{
		ex.printStackTrace();
		}

}

}

und das hier steht in der speichern.java
System.out.println("TEST: "+laden.array1[0]);

Aber hier kommt als ausgbe TEST und nicht der namen den er ausgelesen hat
 
Schau mal, ob überhaupt etwas in deiner Datei drin steht.
Zeile 22 wieso deklarierst du array1 zweimal?
 
da steht was drin.
Ausserdem, wenn ich das array in der laden.java gleich nochmal ausgebe nach dem füllen zeigt es mir ja auch den korrekten Inhalt an.
Ich versteh eben nur nicht warum er den public static wert nicht überschreibt....
 
Da du arry1 im try-Block nochmals deklarierst, wird das erste überdeckt. Ändere das mal.
 
Ja das erste soll ja überdeckt werden, also das wo drin steht TEST
aber das wird es ja komischer weise nicht, oder hab ich dich gerade missverstanden?
 
In deiner Klasse 'laden' (Klassennamen schreibt man groß) passiert nichts anderes, als dass du "Test" in das array schreibst. Greifst du jetzt vom Hauptprogramm darauf zu - nun was meinst du wohl, was passiert...?
Du ließt deine Daten von der Datei in ein globales array ein. So wird das nichts. Du musst das erste array überschreiben aber nicht überdecken!!! :wink:
 
bacmd hat gesagt.:
oder hab ich dich gerade missverstanden?

Richtig!

Durch
Code:
String[] array1 = new String[f.getLineNumber()];

erzeugst du einen neuen, lokalen String-Array, der nichts
mit deinem static-deklarierten zu tun hat.
Was du willst, ist, die static-Variable mit einem neuen Inhalt zu belegen:

Code:
array1 = new String[f.getLineNumber()];

bezieht sich auf dein global deklariertes array1
 
Anonymous hat gesagt.:
In deiner Klasse 'laden' (Klassennamen schreibt man groß) passiert nichts anderes, als dass du "Test" in das array schreibst. Greifst du jetzt vom Hauptprogramm darauf zu - nun was meinst du wohl, was passiert...?
Du ließt deine Daten von der Datei in ein globales array ein. So wird das nichts. Du musst das erste array überschreiben aber nicht überdecken!!! :wink:

Edit: sorry meinte natürlich lokales- nicht globales array 😳
 
Da hätte ich jetzt noch eine Frage:

wenn ich in der speichern.java das Array nicht nur ausgebe sondern verändere, kann ich die Werte dann auch wieder zurück geben an die laden.java?

Vielen Dank!
 
bacmd hat gesagt.:
wenn ich in der speichern.java das Array nicht nur ausgebe sondern verändere, kann ich die Werte dann auch wieder zurück geben an die laden.java?

Dadurch, daß du es veränderst hat auch laden.java die geänderten Werte
zur Verfügung, da es sich um einunddasselbe Array handelt.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben