Random

Java Neuling

Mitglied
Hey!
Ich habe da ein kleines Problem.
Ich möchte Objekte erzeugen, die ihre X-Koordinate zufällig erhalten.
Doch mit der von mir gedachten Möglichkeit springen die Objekte immer hin und her, weil sie ständig neue Werte geliefert bekommen.

Java:
xPosition = (int)((Math.random()) *  700 + 1);
        

Objekt(xPosition);
Objekt(xPosition);
Objekt(xPosition);
Objekt(xPosition);
Objekt(xPosition);
 
G

gman

Gast
weil sie ständig neue Werte geliefert bekommen

Wie oft wird der oben gezeigte Code denn ausgeführt. So wie er da steht ist die X-Position doch für
alle Objekte gleich.

PS: Du könntest auch java.util.Random benutzen (mit nextInt()) brauchst du dann auch nicht mehr
casten.
 

Java Neuling

Mitglied
Mir ist gerade aufgefallen, dass ich einen Timer eingebaut habe.
Aber wie/wo muss ich den Code einsetzen, dass der Timer nicht wirkt?
Bzw, dass nur einmal eine Variable ausgegeben wird?
 

Java Neuling

Mitglied
Ich habe nochmal etwas geändert und frage mich nun, wieso das hier nicht funktioniert:

Java:
        if(spiel){
        	
        	 int[] yPosition = {100,-100,-200};
     		 int[] xPosition = {(int)((Math.random()) *  700 + 1)};
     		 int[] Objektart = {(int)((Math.random()) *  5 + 1)};
      		
            for(int Objektnummer=0;Objektnummer<yPosition.length;Objektnummer++){
            		

                
            		if(Objektart[Objektnummer]==1){ 
            		if(nummer < Objektnummer+1 ){
                    	Objekt1(xPosition[Objektnummer],g,yPosition[Objektnummer]);
            		}
                	}
                if(Objektart[Objektnummer]==2){ 
               		if(nummer < Objektnummer+1 ){
                       	Objekt2(xPosition[Objektnummer],g,yPosition[Objektnummer]);
               		}
                }
                if(Objektart[Objektnummer]==3){ 
              		if(nummer < Objektnummer+1 ){
                      	Objekt3(xPosition[Objektnummer],g,yPosition[Objektnummer]);
              		}
               }
                if(Objektart[Objektnummer]==4){ 
              		if(nummer < Objektnummer+1 ){
                      	Objekt4(xPosition[Objektnummer],g,yPosition[Objektnummer]);
              		}
               }
                if(Objektart[Objektnummer]==5){ 
              		if(nummer < Objektnummer+1 ){
                      	Objekt5(xPosition[Objektnummer],g,yPosition[Objektnummer]);
              		}
               }
            }

         }

Ich bekomme diesen Error:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
at Spiel.paintComponent(Spiel.java:178)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


Ich hoffe ihr könnt mir weiterhelfen!
 
G

Gast2

Gast
Java:
int[] xPosition = {(int)((Math.random()) *  700 + 1)};
int[] Objektart = {(int)((Math.random()) *  5 + 1)};
Du erzeugst hier ein Array der Länge 1 und versuchst auf größere Indices zuzugreifen, das haut natürlich nicht hin ;)
Außerdem wird so jedes Objekt den selben x-wert haben, da du nur eine Zufallszahl erzeugst. Du solltest das erstellen der Zufallszahlen mit in die Schleife schreiben.
 

Java Neuling

Mitglied
Jetzt habe ich wieder das oben genannte Problem, dass durch den Timer ständig neue Werte ausgegeben werden und die Objekte springen.
Aber ich bekomme es irgendwie nicht hin es von einer anderen Stelle aufzurufen.
 

Java Neuling

Mitglied
Da eine If-Abfrage erfolgt, passiert irgendwie nichts.
Wenn ich die If-Abfrage weglasse, was ich eigentlich nicht darf, bekomme ich wieder einen Error:

Exception in thread "main" java.lang.NullPointerException
at Spiel.Objekt1(Spiel.java:310)
at Spiel.<init>(Spiel.java:69)
at Spiel.main(Spiel.java:110)
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Hallo,

programmieren ist kein Ratespiel, wo man einfach mal was weglässt.

Dir fehlen offensichtlich Grundlagen.

1. Arrays müssen mit einer größe X initialisiert werden.
2. (Math.random()) * 700 + 1)<-- erzeugt genau EINE zufallszahl!
3. wenn ich das in ein int[] array packe, dann ahbe ich ein Array der größe 1.
4. Informiere dich bitte über die Exceptions. ArrayOutOfBound und Nullpointer werden dir sehr oft begegnen.

Gruß,

Martin
 
Es ist schwer, den Code theoretisch nachzuvollziehen. Ein Beispiel, das ich direkt kompilieren kann (oder können sollte), fände ich schöner, dann könnte ich schneller helfen.

Hier ist mein Versuch, Deinen Code in "normale Sprache" zu übersetzen, d. h. ich versuche wiederzugeben, was meiner Meinung nach in Deinem Code passiert. Vergleiche das mit dem, was Du eigentlich beabsichtigt hast, und schaudere (neee, kleiner Scherz...).

Also, wenn "spiel" wahr ist, deklariere ein array mit 3 Elementen (100, -100, -200) und nenne es yPosition. Deklariere ein array mit einem Element (eine Zufallszahl zwischen 1 und 700) und nenne es xPosition (wieso dann ein array? hm...). Deklariere ein array mit einem Element (eine Zufallszahl zwischen 1 und 5) und nenne es Objektart.

Durchlaufe eine Schleife mit der Schleifenvariable Objektnummer, die bei 0 beginnt, bei der abgefragt wird, ob sie kleiner als 2 (die Länge des arrays yPosition) ist, und die bei jedem Durchlauf um 1 inkrementiert wird.

Wenn Objektart[Objektnummer] - halt! Das geht nicht. Objektnummer kann nur 0 sein, denn sobald diese Variable 1 ist, wird auf Objekart[1] zugegriffen. Das gibt es aber nicht. Objektart - siehe oben - ist ein array mit der Länge 1, d. h. es hat nur das Element Objektart[0].

Mit quietschenden Reifen hält hier die Übersetzungspolizei an und zeigt die große, rote, blinkende Kelle.

Nebenbei gesagt: Es gibt eine Konvention, wonach Felder/Variablen und Methoden mit kleinen Buchstaben anfangen sollen (objektNummer oder objektnummer, aber nicht Objektnummer). Klassen fangen mit Großbuchstaben an, Konstanten (bzw. final deklarierte Felder/Variablen) werden oft komplett großgeschrieben. Das habe ich mir als Java-Neuling auch angewöhnt, und es hilft tatsächlich. Vor allem, wenn man den Code erst nach einigen Tagen wieder ankuckt und sich fragt, was man da eigentlich gemeint hatte...
 

Shulyn

Bekanntes Mitglied
So wie ich das sehe möchtest du n Objekte erzeugen.

Ich würde dir dazu raten die Objekte in einer eigenen Methode erzeugen zu lassen. Dann kannst du die Methode n mal aufrufen und so n Objekte erzeugen...
ein beispiel :

[Java]
public meinObject neuesObject() {
int yPosition = (int)((Math.random()) * 3 + 1);
int xPosition = (int)((Math.random()) * 700 + 1);
int Objektart = (int)((Math.random()) * 5 + 1);

// deine yPositionen zuweisen gibt aber schönere/bessere Methoden dazu ;)
if(yPosition == 1)
yPosition = 100;
else if(yPosition == 2)
yPosition = -100;
else
yPosition = 200;

return new meinObject(yPosition,xPosition,Objektart);
}
[/Java]

Wenn du ka. hast wie viele Objecte genau erzeugt werden/werden müssen. Könntest du diese z.B. in eine Collection packen, sprich immer wenn du ein neues Object benötigtst hängst du eines an die herran. Das kann dann auch ein spezieler typ sein, je nachdem was du damit machen möchtest, ob sortiert nicht sortiert usw.

//edit: Irgendwie werden meine Tabs hier immer komisch eingerückt ;(
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
laxla123 Bedeutung int random Java Basics - Anfänger-Themen 3
monsterherz Arbeiten mit Random Java Basics - Anfänger-Themen 12
J Math.Random Java Basics - Anfänger-Themen 9
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
K Problem mit "Random" Java Basics - Anfänger-Themen 5
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Random(x,y,z) Java Basics - Anfänger-Themen 4
alialhajhossein math.random Java Basics - Anfänger-Themen 3
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
D Wahrscheinlichkeiten mit Math.random() Methode Java Basics - Anfänger-Themen 1
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
A Random Double mit Math.round() runden? Java Basics - Anfänger-Themen 1
B Math.random mit Boolean array? Java Basics - Anfänger-Themen 17
I math.random Grenzwerte Java Basics - Anfänger-Themen 2
C Arraywerte random vertauschen Java Basics - Anfänger-Themen 2
E Methoden Math.Random() kürzen ? Java Basics - Anfänger-Themen 2
SchmidiMC Methoden Random in Methode neu generieren lassen Java Basics - Anfänger-Themen 1
J Klassen Math && Random: wie zufällig sind Zufallszahlen? Java Basics - Anfänger-Themen 19
J Operatoren Random wird nur einmal erstellt und dann immer verwendet Java Basics - Anfänger-Themen 2
D Erste Schritte Random erzeugen Java Basics - Anfänger-Themen 28
D Erste Schritte Random Java Basics - Anfänger-Themen 79
Z Problem mit "Random" in Java Java Basics - Anfänger-Themen 12
Z Array-Index einmalig je mit Random füllen Java Basics - Anfänger-Themen 7
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3
F Erste Schritte Random Zahl auswählen Java Basics - Anfänger-Themen 7
J Methoden Math.random unklar Java Basics - Anfänger-Themen 4
N java.util.Random - Zwei Zahlen mit festgesetzter Wahrscheinlichkeit? Java Basics - Anfänger-Themen 15
Thorwine Erste Schritte Wuerfelspiel mit Math.random() Java Basics - Anfänger-Themen 10
S Math.random() Zufall ? Java Basics - Anfänger-Themen 2
S Random Plattformen erstellen Java Basics - Anfänger-Themen 7
C Erste Schritte Random Wert auslesen und ausgeben Java Basics - Anfänger-Themen 2
H Ist Math.Random() eine Methode oder ein Methodenaufruf (Klausurfrage) Java Basics - Anfänger-Themen 4
I Random Ergebnis ausgeben und Gewinner ausgeben. Java Basics - Anfänger-Themen 3
I Spieler Name eintragen und Random Gewinner Java Basics - Anfänger-Themen 4
A Random String in TextView (Android)? Java Basics - Anfänger-Themen 2
V Random Java Basics - Anfänger-Themen 2
X Problem mit Math.random() Java Basics - Anfänger-Themen 2
S Random IDs immer 10-stellig? Wie? Java Basics - Anfänger-Themen 5
T Random vs. Math.random() Java Basics - Anfänger-Themen 2
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
B Verstehe ZufallInt = (int) (Math.random() * 5 + 1); nicht Java Basics - Anfänger-Themen 9
K Doppelte namen bei random Java Basics - Anfänger-Themen 3
K Einfacher random namen weitergeben Java Basics - Anfänger-Themen 4
B Hilfe bei Greenfoot ( random blickrichtung + vor(); Java Basics - Anfänger-Themen 10
B Variablen Mehrere Zahlen mit unterschiedlicher Wahrscheinlichkeit mit Random auswählen Java Basics - Anfänger-Themen 17
M Random bereich und for schleife Java Basics - Anfänger-Themen 20
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
R java.util.Random Java Basics - Anfänger-Themen 8
T Zufallserzeugung mit math.random und speichern in array Java Basics - Anfänger-Themen 29
J Woher kommt das Objekt "Math" bei Math.random(); ? Java Basics - Anfänger-Themen 3
P Typecasting für Ganzzahlige Zufallszahl (Math.random) Java Basics - Anfänger-Themen 2
I Zwei Mal das selbe Objekt per Random :( Java Basics - Anfänger-Themen 7
E Random Java Basics - Anfänger-Themen 7
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
E Variable neue Random Zahl zuweisen, wenn Button geklickt Java Basics - Anfänger-Themen 5
J Bedeutung von math.random() math.round() Java Basics - Anfänger-Themen 7
K ArrayList random füllen Java Basics - Anfänger-Themen 2
K random problem Java Basics - Anfänger-Themen 3
F Problem Math.random in for-Schleife Java Basics - Anfänger-Themen 8
R (Math.random()*49) zahl darf aber nur einmal gezogen werden Java Basics - Anfänger-Themen 11
B Random() gleiche Zahlen ausschließen Java Basics - Anfänger-Themen 30
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
C math.random() Java Basics - Anfänger-Themen 9
R math.random wertebereich 16-21 Java Basics - Anfänger-Themen 3
B Math.random und Strings Java Basics - Anfänger-Themen 13
R Java Random Java Basics - Anfänger-Themen 13
G Zahl erstellen / Random Java Basics - Anfänger-Themen 12
radiac Datentypen RANDOM-punkt setzen INNERHALB eines BEREICHes Java Basics - Anfänger-Themen 2
M Zufallszahlen mit Random Java Basics - Anfänger-Themen 4
K Random Zahlen in ein Feld Java Basics - Anfänger-Themen 4
N java.util.Random Java Basics - Anfänger-Themen 6
Luk10 math.random() Java Basics - Anfänger-Themen 2
walker23m Datentypen Zufällig umsortieren einer Hashmap(random?) Java Basics - Anfänger-Themen 3
M Junit TestCase für Random() Zahlen Java Basics - Anfänger-Themen 6
S Random zahlen mit unter und obergrenze Java Basics - Anfänger-Themen 3
D Problem mit Set, Stack und Random Java Basics - Anfänger-Themen 2
S Skatblatt darstellen durch Random? Java Basics - Anfänger-Themen 48
C Bereich festelgen bei Random Java Basics - Anfänger-Themen 9
H Random-Zahlen Java Basics - Anfänger-Themen 7
L Random Sortierung Java Basics - Anfänger-Themen 9
T random-methode Java Basics - Anfänger-Themen 18
M Random in Swing Java Basics - Anfänger-Themen 24
J Math.random() - kurze frage. Java Basics - Anfänger-Themen 20
J Random Wertebereich Java Basics - Anfänger-Themen 2
B Frage zu Random Java Basics - Anfänger-Themen 21
chik klasse random() Java Basics - Anfänger-Themen 6
B Random Zahlen und Formatierung Java Basics - Anfänger-Themen 6
G Random Zahlen Java Basics - Anfänger-Themen 25
S Diashoow Random Java Basics - Anfänger-Themen 4
G Switch-Case harmoniert nicht mit Random-Zahl Java Basics - Anfänger-Themen 3
Spin 4 stellige random zahl erzeugen Java Basics - Anfänger-Themen 4
G random mit tendenz? Java Basics - Anfänger-Themen 8
hedges Würfelwurf mit java.util.Random ohne 0 Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben