Moinsen alle zusammen,
Habe folgendes Problem: Ich lese aus einer .txt pro Zeile einen String ein, in dem ich Datum, Temperatur, Druck und Luftfeuchtigkeit abspalte. Klappt auch wunderbar. Desweiteren habe ich die Klassen Datum, Temperatur und Feuchte. In einer KLasse Wetter fasse ich alle Einträge der .txt zusammen.
btw: kenne Java seit September und kann seit Dezember einigermassen damit arbeiten
Ich lese also in der for() Zeile für Zeile ein und spalte jeweils den String datum ab, aus dem ich in der Klasse Datum wiederum day, monat und year abspalte, das Datum objekt erstelle, zurück gebe und sogleich in das Datum[] dat Array abfülle.
Nur habe ich mitlerweile festgestellt, dass bei jedem dat.printDate das Datum mit dem eingelesene String überein stimmt, jedoch wenn ich das Array dat ausserhalb der Schleife ausgebe, bestehen alle Elemente aus dem als letzes eingelesenen Datum. Desshalb prüfte ich mal mit dat[0].printDate(); und stellte fest, dass, obwohl ich ja auf das aller erste Element zugreiffe, es immer dem aktuell eingelesenen Datum entspricht. :autsch::autsch:
Das abfüllen der restlichen Array Feuchte, Druck und Temp klappt wunderbar. Ich hege langsam die Vermutung es könnte daran liegen, dass die Methode StringToDatum(datum) UND die variablen day, month und year statisch sind. Allerdings wüsst ich nicht, wie ich die ansprechen kann wenn nicht static
Bin da grad absolut am Ende mit meinem Latein. Schon den ganzen Samstag am Debuggen, wobei ich feststellte, dass beim Abfüllen des Datum Arrays jeder Eintrag eine andere Adresse hat. Was auch immer das Bedeutet.
Naja, hoffe ihr könnt mir weiterhelfen. Steh wie der Esel am Berg -.-
EDIT: Ahh, ausserdem: die Methoden zum abfüllen der Feuchtigkeit und Druck usw. sind AUCH statisch :S (jedoch nicht die instanz variablen!)
ANHANG:
KLASSE DATUM
METHODE VOM STRING ZUM DATUM:
Habe folgendes Problem: Ich lese aus einer .txt pro Zeile einen String ein, in dem ich Datum, Temperatur, Druck und Luftfeuchtigkeit abspalte. Klappt auch wunderbar. Desweiteren habe ich die Klassen Datum, Temperatur und Feuchte. In einer KLasse Wetter fasse ich alle Einträge der .txt zusammen.
btw: kenne Java seit September und kann seit Dezember einigermassen damit arbeiten
Java:
public class Wetter {
static Temperatur[] t;
static Druck[] d;
static Feuchte[] f;
static Datum[] e;
Ich lese also in der for() Zeile für Zeile ein und spalte jeweils den String datum ab, aus dem ich in der Klasse Datum wiederum day, monat und year abspalte, das Datum objekt erstelle, zurück gebe und sogleich in das Datum[] dat Array abfülle.
Java:
//////////////////////////// ERSTELLEN DER DATENBANK AUS TXT /////////////////////////////////////
static Wetter StringToDetails() {
WetterDaten e = new WetterDaten();
e = TXTToDetails();
Wetter wetter = new Wetter();
Datum[] dat = new Datum[k];
for (int i = 0; i < e.daten.length - 1; i++) {
String datum, zeit, temperatur, druck, feuchtigkeit;
int v, v1 , w, x, y, z;
// ********** ABSPALTEN DES DATUMS *********//
v1 = e.daten[i].indexOf(" "); // Stelle des Abstandes, danach kommt die Uhrzeit
v = e.daten[i].indexOf(";"); // Stelle des 1. Semikolons. Danach kommt das Datum
datum = e.daten[i].substring(v+1, v1);
dat[i] = Datum.StringToDatum(datum); dat[i].printDate();
dat[0].printDate();
}
wetter = new Wetter(temp, dru, feuch, dat);
return wetter;
}
Nur habe ich mitlerweile festgestellt, dass bei jedem dat.printDate das Datum mit dem eingelesene String überein stimmt, jedoch wenn ich das Array dat ausserhalb der Schleife ausgebe, bestehen alle Elemente aus dem als letzes eingelesenen Datum. Desshalb prüfte ich mal mit dat[0].printDate(); und stellte fest, dass, obwohl ich ja auf das aller erste Element zugreiffe, es immer dem aktuell eingelesenen Datum entspricht. :autsch::autsch:
Das abfüllen der restlichen Array Feuchte, Druck und Temp klappt wunderbar. Ich hege langsam die Vermutung es könnte daran liegen, dass die Methode StringToDatum(datum) UND die variablen day, month und year statisch sind. Allerdings wüsst ich nicht, wie ich die ansprechen kann wenn nicht static
Bin da grad absolut am Ende mit meinem Latein. Schon den ganzen Samstag am Debuggen, wobei ich feststellte, dass beim Abfüllen des Datum Arrays jeder Eintrag eine andere Adresse hat. Was auch immer das Bedeutet.
Naja, hoffe ihr könnt mir weiterhelfen. Steh wie der Esel am Berg -.-
EDIT: Ahh, ausserdem: die Methoden zum abfüllen der Feuchtigkeit und Druck usw. sind AUCH statisch :S (jedoch nicht die instanz variablen!)
ANHANG:
KLASSE DATUM
Java:
public class Datum {
static int day;
static int month;
static int year;
Datum(int day, int month, int year) {
Datum.day = day;
Datum.month = month;
Datum.year = year;
}
METHODE VOM STRING ZUM DATUM:
Java:
////////////////////// DATUM AUS ZAHLEN //////////////////////
static Datum StringToDatum(String z) {
int x, y;
// ********** ABSPALTEN DES JAHRES *********//
x = z.indexOf("-"); // Stelle des Bindestriches. Danach kommt der Monat
year = Integer.parseInt(z.substring(0, x));
// ******** ABSPALTEN DES MONATS ***********//
y = z.indexOf("-", x + 1);// Stelle des 2. Bindestriches. Danach kommt der Tag
month = Integer.parseInt(z.substring((x + 1), y));
// ******* ABSPALTEN DES TAGES ******//
day = Integer.parseInt(z.substring(y + 1));
Datum e = new Datum(day, month, year);
return e;
}
Anhänge
Zuletzt bearbeitet: