Hallo,
ich arbeite an einer einfachen Würfelsimulation, dieein Array vom Typ int beinhaltet, in dem für die sechs möglichen Würfelergebnisse deren Häufigkeit gespeichert werden soll. Das Würfel klappt problemlos, aber der Compiler will nicht als Starthäufigkeit Null zulassen und fordert eine eckige Klammer.
Wo ist mein Denk-/Schreibfehler?
Vielen Dank für die Hilfe!
Ja, ich will aber dass bei jedem Wurf mitgezählt wird, wieoft die Zahl gewürfelt wurde um eine Statistik zu erstellen. Wenn ich das Objekt per BlueJ inspiziere wird aber "null" und nicht "0" angezeigt.
Ich hatte oben übersehen, dass du das Array als Instanzvariable auch gespeichert hast(was auch richtig ist) und dass die Klammern und das int bei
Code:
[B] int haeufigkeit [][/B] = new int [6];
auch weg müssen! Weil sonst erstellst du eine neue lokale Variable. Marco hatte das doch aber schon für dich geändert? (wobei er auch die Klammern übersehen hat, die müssen weg )
Und
importjava.util.Random;importjava.util.Arrays;publicclassWuerfel{privateint[] haeufigkeit;// die bleibt immer 0privateint wert;publicWuerfel(){int haeufigkeit []=newint[6];// hier gibt es eine NEUE variable haeufigkeitArrays.fill( haeufigkeit,0);}// ab hier existiert die neue Variable nicht mehr!publicintwuerfeleEinmal(){
wert=(int)(Math.random()*6+1);
haeufigkeit[wert]++;return wert;}}
Hast du schon einmal sicherheitsrelevante SW geschrieben Es schadet aber auch nichts wenn man es initialisiert und so wenig wie bei Java garantiert ist, wissen wir nicht ob es die übernächste Version auch so macht.
Was mich mehr wundert ist die redundante Information - hab ich alles schon kommentiert.
Hast du schon einmal sicherheitsrelevante SW geschrieben Es schadet aber auch nichts wenn man es initialisiert und so wenig wie bei Java garantiert ist, wissen wir nicht ob es die übernächste Version auch so macht.
Mit was sollten sie es denn deiner Meinung nach initialisieren in der nächsten Version? Mit null? Geht nicht und alles andere würde auch einfach keinen Sinn machen, zu dem steht`s auch so in der Java Language Specification, also würde ich davon schon ausgehen!
Falls du so wenig vertrauen hast, kannste ja array[0] abfragen oder glaubst du in der nächsten Version wird das Array beliebig/zufällig gefüllt von –2.147.483.648 ... 2.147.483.647 ?
Es schadet aber auch nichts wenn man es initialisiert und so wenig wie bei Java garantiert ist, wissen wir nicht ob es die übernächste Version auch so macht.
Wenn man eine Liste mit 100000 Einträgen sortiert, "schadet" es auch nicht, wenn man sie nochmal sortiert Es "schadet" schon, in dem Sinne, dass es überflüssig ist und Zeit kostet. Ein paar Mikrosekunden, ja, aber ... warum sollte man sich die Arbeit machen, etwas hinzuschreiben, was dem Computer Arbeit macht, und nichts bringt? (OK, das mache ich den ganzen Tag, aber da krieg' ich Geld dafür ). Man kann sich übrigens drauf verlassen, dass das auch bei der nächsten Version von Java noch so ist. Die Vehemenz, mit der bei Java Rückwärtskompatibilität gewahrt wird, wurde schon von manchen als Hemmschuh für neue Enwicklungen kritisiert, aber sie hat auch Vorteile ... (wer schonmal ein Visual Studio 6-Projekt mit Qt 3.4 auf VS2010 mit Qt 4.3 hiefen mußte (oder müßte) weiß das zu schätzen....)