• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Java Hilfe :(

Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Hat jemand von den Leuten die (gut) Java können mal ca. 30minuten zeit um meine Fehler in der Hausaufgabe zu finden?
Ist nicht wirklich viel und nicht kompliziert. 1 woche java bisher gehabt und sollen nun eine Datenbank shreiben, aber irgendwie will kein einziger der junit Testcases (die vorgegeben waren) funktionieren und ich weiß nicht warum.
Icq oder irc wären optimal.
 

killerchicken_inaktiv

Guest
Was spricht dagegen, den Source hier zu posten, damit alle davon lernen können?
 

RRA^StArFiRe

Guest
jo post mal hier die junit errors und die dazugehörigen codezeilen.
 

Shihatsu

Administrator
Mitglied seit
26.09.2001
Beiträge
49.620
Reaktionen
10.254
warri, code her oder augenring. hier gibbet ne ganze menge leute, die von java ne ahnung haben. damit sie dir aber freiwiliig helfen, musst du ihnen aber auch die möglichkeit geben, sich zu profilieren. und keine angst vor schlechtem code, ich kote seit 7 jahren java geraffel und bau heute noch kacke :top:
 

bog

Mitglied seit
02.08.2002
Beiträge
10.121
Reaktionen
0
Ort
auf dem mutterschiff
poste es lieber nicht hier. ich gab dave ma meinen c++ code und er kackte voll ab :flop:

zeigs mir lieber im query!
 
Mitglied seit
02.09.2002
Beiträge
3.281
Reaktionen
106
"Hilfe bei Java Code" ohne Source is für Nerds wie "Titten HIER" ohne Bilder. :mad:
 

Shihatsu

Administrator
Mitglied seit
26.09.2001
Beiträge
49.620
Reaktionen
10.254
Original geschrieben von bog
poste es lieber nicht hier. ich gab dave ma meinen c++ code und er kackte voll ab :flop:

zeigs mir lieber im query!
du kleiner ********, die aufgabenstellung war kacke und mein lösungsvorschlag galt nicht. musste ja alles in son dohves struct, und ich kann nunmal kein c, nur java :(
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Ok also letzte Woche sollten wir folgende Datenbank schreiben:
http://nopaste.php-quake.net/137174

Das hab ich dann hinbekommen, jetzt sollen wir aber die Datenbank um ein paar Funktionen erweitern.
Dafür sollen wir eine Klasse ImprovedDatabase die von Database erbt schreiben und folgende Interfaces hat:
http://nopaste.php-quake.net/137177

Habe dann die Konstruktoren geschrieben.
Code:
public ImprovedDatabase() { super();}
Code:
public ImprovedDatabase(Entry[] insert) { super(insert);}

Mein Problem ist jetzt, dass alle Methoden der ImprovedDatabase als Parameter die Klasse ImprovedDatabase haben z.b.
Code:
public int union(ImprovedDatabase data) {..}
Diese Funktion soll die vorhandene Datenbank entries aus Database mit data zusammenführen, indem ich die Methoden der Klasse Database benutze. Diese Methoden lassen sich jedoch nur mit Parameter Entry aufrufen. Wie krieg ich jetzt also aus data die Entries raus?
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
javazk1.jpg
 

RRA^StArFiRe

Guest
für data.getentry(int):entry brauchste doch nur n int?
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Original geschrieben von =Starfire=
für data.getentry(int):entry brauchste doch nur n int?
Als getEntry hab ich:

Code:
public Entry getEntry(int pos) {return entries[pos];}

Die liefert ja ein entry aus der bereits gespeicherten Datanbank entries der Klasse Database zurück.

Wenn ich das also mit data.getEntry(int pos) aufrufe würde es statt entries aus data den eintrag suchen?
 
Mitglied seit
03.08.2002
Beiträge
707
Reaktionen
0
verstehe das problem nicht wirklich. was union() machen soll steht doch in der aufgabenstellung? dann musst du dir halt noch die entsprechenden methoden raussuchen...
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Mein Problem war dass union als Parameter eben keinen Entry enthält und ich daher auch die Methoden addEntry etc nicht aufrufen kann, da ich ja nur den Parameter ImprovedDatabase habe. Aber mit getEntry müsst es ja jetzt gehen.

MesH auch an der TUD? ;)
 

RRA^StArFiRe

Guest
ja du brauchst da nur getEntry(int) und getSize(). schon kannste dir dein entry[] in ner schleife zusammenbasteln wenn du magst, oder direkt drauf arbeiten.
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Ok hab wieder ein Problem.
http://rafb.net/p/hWGXGF76.html
Also getContentFor() liefert mir den Eintrag der Spalte des Entries. Diesen soll ich mit str vergleichen.
Dabei soll aber nicht nach Groß und Kleinschreibung, sowie der Stelle der passenden Buchstaben bzw Zahlen unterschieden werden.
Als Beispiel: wenn getContentFor -> Hans liefert, soll ein vergleich mit Ans true ergeben. Wie mach ich das?:bored:

equalsIgnoreCase hilft ja auch nicht, weil Ans=ans eben immer noch nicht Hans ist :/
 

RRA^StArFiRe

Guest
versuchs mal mit


if (getContentFor(col, i).toLowerCase().contains(str.toLowerCase())){
d.addEntry(getEntry(i));
}
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Geht nicht :/
Irgendwas stimmt an der Ausgabe nicht:

Expected: hans blabla
but was: null

Hier nochmal mein Code:
http://rafb.net/p/bDtVJe93.html
Vielleicht liegt es ja an meiner Hilfsfunktion getContentFor?
 

RRA^StArFiRe

Guest
dann lass dir doch die ergebnisse von getcontentfor() in der schleife ausgeben.
mit contains funktioniert das jedenfalls, dass "Hans".contains("Ans") = true ist (mit den tolowercase)
 
Mitglied seit
21.07.2002
Beiträge
545
Reaktionen
0
Code:
Entry[] e=new Entry[d.getSize()];
return e;

könnte das hier ein problem sein ?!

Und ARRRRRRRRRGH my eyes. und hoffe niemand kommt jemals auf die idee nach teilen des wortes "null" zu suchen.
 
Mitglied seit
03.08.2002
Beiträge
707
Reaktionen
0
hm, wäre da nicht eine runtime exception besser?

und was passiert mit d nach dem aufruf von selectXFrom()?
 

RRA^StArFiRe

Guest
Original geschrieben von Invincible[UFF]
Code:
Entry[] e=new Entry[d.getSize()];
return e;

könnte das hier ein problem sein ?!

wenn es so sein soll, dass du ein leeres array der größe d.getSize() zurückgeben willst, dann ja.

ansonsten mach dir einfach anstatt der datenbank "d", die du ja scheinbar eh danach wegwirfst, ne liste a´la:
ArrayList<Entry> eList = new ArrayList<Entry>();

und packst deine übereinstimmungen in der schleife mit:
eList.add(getEntry(i));
ran.

am ende ein:
return (Entry[]) (eList.toArray());

und du hast n array mit werten.

und gib bitte niemals "null" als string zurück.
die referenz auf den zurückgegeben string darf ein null(pointer) sein.
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Wir dürfen nur Arrays benutzen, keine vectors list etc.
Jetz sehe ich tatsächlich dass ich in e noch gar nichts gespeichert hab sondern nur ein array mit der Länge der Datenbank erstellt habe, oh man :D

Werds gleich mal überarbeiten und ergebnis posten in ~1stunde.
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Ok neue Woche neues Problem :(

Ich hab eine Hashmap tempHistoryPerLocation
in die pro sekunde ein Eintrag gemacht wird
tempHistoryPerLocation.put(location, temperature);
wobei es 4 unterschiedliche locations gibt, die sich dann immer wiederholen.
Ich soll jetzt den durchschnitt der letzten 30 werte pro location in einer map speichern, habe aber keinen Ansatz wie ich das überhaupt machen soll. Es sollen wie gesagt auch nur 30 werte pro location gespeicehrt werden, ältere dann gelöscht werden.
 
Mitglied seit
01.09.2008
Beiträge
1.201
Reaktionen
0
Musst du eine bestimmte Datenstruktur dafür verwenden? Hashmap hört sich irgendwie komisch dafür an.
 
Mitglied seit
02.09.2002
Beiträge
3.281
Reaktionen
106
...das kann irgendwie nicht gehen, zumindest so wie ich dich verstehe.

Wenns nur 4 locations gibt, landen auch nur 4 Werte in der hashmap.
Oder ist temperature nen array oder so?
 
Mitglied seit
01.09.2008
Beiträge
1.201
Reaktionen
0
@Warri
Du solltest dein Problem auf jeden Fall genauer spezifizieren.

Original geschrieben von Alber Einstein
Das Problem zu erkennen ist wichtiger, als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung.
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
Wir müsesn wohl hashmap verwenden. Jedenfalls wird jede Sekunde die Methode newTemperature(String location, double temperature) aufgerufen, die einen ort und einen temperatur in tempHistoryPerLocation speichert. Anschließend soll ich eben die Durchschnittswerte pro location berechnen und auch den Maximalwert.

http://rafb.net/p/IzGuqT39.html

der timestamp ist überflüßig und soll erstmal nicht beachtet werden.

locations gibt die Orte sortiert aus, damit ich die Graphen sortiert ausgeben kann.
Also mir gehts jetzt nur darum wie ich auf das avgTemperature jeweils pro ort komme, und das dann in lastDiagramData speichere, sowie die höchste temperatur peak.
 

killerchicken_inaktiv

Guest
Aufgabenstellung her. Wenn du nämlich Mittelwerte ausrechnen magst, und genau weisst, wie oft deine Methode aufgerufen wird, kannste dafür den Timestamp durchaus verwenden. Irgendwo die Startzeit sichern und die addierten Werte, fertig.
 

RRA^StArFiRe

Guest
Original geschrieben von Warri
Ok neue Woche neues Problem :(

Ich hab eine Hashmap tempHistoryPerLocation
in die pro sekunde ein Eintrag gemacht wird
tempHistoryPerLocation.put(location, temperature);
wobei es 4 unterschiedliche locations gibt, die sich dann immer wiederholen.
Ich soll jetzt den durchschnitt der letzten 30 werte pro location in einer map speichern, habe aber keinen Ansatz wie ich das überhaupt machen soll. Es sollen wie gesagt auch nur 30 werte pro location gespeicehrt werden, ältere dann gelöscht werden.

habs zwar nicht ganz verstanden, aber ganz dumm würd ich mal jetzt behaupten:

- machst dir 4 maps mit <key, value> belegst den key mit werten von 1 bis 30 und das value mit der temperatur.
- für jede map nen counter, der dir die letzte eingetragene position speichert.
- nach counter = 30 (bzw. 29) einfach wieder auf 1 (bzw. 0) setzen.


aber irgendwie macht der satz "den durchschnitt der letzten 30 werte pro location in einer map speichern" keinen sinn.
denn der durchschnitt ist genau ein berechneter wert. und für einen wert brauchst du keine map.
 
Mitglied seit
01.09.2008
Beiträge
1.201
Reaktionen
0
Für mich hört sich das eher nach einem Array mit 4 ArrayBlockingQueues an.
Der Array Index bezeichnet die Location und in den Queues dann die Temperaturen. Falls die Locations als String kommen dann helfen Enums.
Der älteste Eintrag steht dort immer am Kopf. Somit macht man einfach ein poll() um das älteste Element zu entfernen und dann ein add() um ein neues hinzu zu fügen. Für Mittelwert einfach über die Queues iterieren und fertig.
 
Mitglied seit
21.09.2004
Beiträge
2.070
Reaktionen
0
http://rafb.net/p/1PETw036.html
Das ist die Aufgabenstellung.
die 1) hab ich hinbekommen indem ich ein array als 3. Parameter übergebe, in dem die Orte gespeichert sind, array[0] für den der zuerst angezeigt wird, bis zu array[3] für den letzen ort dann.
Ich hab mir das jetzt so gedacht, dass ich alle einkommenden Werte in tempHistoryPerLocation speichere, sodass es dannetwa so aussieht:

A124 12.23123
A126 16.234
A124 123.4123
C110 12.39
A124 123.12

Also hier hätte ich jetzt 3 Werte für A124, einen für A126 und einen für C110. Würde dann nacheinander alle auslesen, den Durchschintt pro location, also einen Durchschnitt für A124 A126 etc, und diesen dann in lastDiagramData speichern ->

A124 $durchschnitt
A126 $durchschnitt
C110 $durchschnitt

Anschließend wird damit displayDiagram inklusive dem Maximalwert und den sortierten orten, die in locations gespeichert sind aufgerufen.
 
Oben