6 int variablen vergleichen

786Newbie

Mitglied
Hi, mein Ziel ist dass ich 6 int variablen
Java:
int i1=(int) (Math.random()*6);//zufallszahl
int i2=(int) (Math.random()*6);//zufallszahl
int i3=(int) (Math.random()*6);//zufallszahl
int i4=(int) (Math.random()*6);//zufallszahl
int i5=(int) (Math.random()*6);//zufallszahl
int i6=(int) (Math.random()*6);//zufallszahl

in einem if ()vergleichen soll und wenn mindestens 3 den gleichen wert haben,
es was bestimmtes ausdruckt.

hab schon einpaar sachen ausprobiert aber hat leider nicht funktioniert und google find ich auch nichts brauchbares.
das einzige idee, die ich habe ist jede einzelne möglichkeit aufzuschreiben :oops:
hoff jemand kann mir weiter helfen :roll:
 

Ruzmanz

Top Contributor
Java:
HashSet<Double> set = new HashSet<>(6);
set.add(Math.random()*6);
set.add(Math.random()*6);
set.add(Math.random()*6);
set.add(Math.random()*6);
set.add(Math.random()*6);
set.add(Math.random()*6);
if(set.size() >= 3) {
	System.out.println("Glück gehabt.");
}

Ich hätte es spontan mit einem Set<E> gemacht. Evtl. findet noch jemand eine bessere Lösung.
 

Androbin

Bekanntes Mitglied
Wie wäre es damit 8

Du fügst in einer for-Schleife die int's einer ArrayList, etc. hinzu und
prüfst (innerhalb der for-Schleife) mit der contains-Methode, ob dieser bereits vorhanden war/ist.

Java:
ArrayList<Integer> list = new ArrayList<Integer>();

boolean bool = false;

for ( int i = 0; i < 6M i++ ) {
	
	int integer = (int) ( Math.random() * 6 );
	
	if ( !list.contains( integer ) )
		  list.add( integer );
	else {
		bool = true;
		break;
	}
	
}

String s = null;

if ( bool ) s = "Doppelt !!!";
else        s = "Nicht Doppelt !!!";

System.out.printl( s );
 

786Newbie

Mitglied
@Gucky
sry komme nicht drauf was du meinst
wenn die zahlen sortiert sind hab ich sie halt in einer anderen "reihenfolge" wie soll daraus den programm rausfinde lasse ob mindestens 3 variablen den selben wert haben?

@Ruzmanz
kenne mich leider mit Hashset nicht aus, bin noch ein totaler neuling ^^
muss ich dafür etwas besonderes noch dazu schreibe? denn es zeigt bei mir fehler an und ich komme nicht drauf was, und kann ich dazu die variablen einfügen? brauche die nämlich für mein programm:D

@Androbin
korrigier mich falls falsch liege, aber dieser code reagiert ja AUCH wenn es NUR doppelt ist oder?
vlt hab ich meine frage falsch formuliert. ich brauch die 6 variablen für ein kleines spiel
dabei werden 6 bilder angezeigt die jede sekunde zufällige bild anzeigt, falls 3 bilder die selben sind, muss der spieler enter rechtzeitig drücken. wenn du möchtest kann ich mein momentanen Code hier mal posten
 

Ruzmanz

Top Contributor
Du hast wahrscheinlich
Code:
import java.util.HashSet;
vergessen. Ein Set ist ein Datenstruktur (wie zum Beispiel Listen, Bäume, Stacks, etc.), dass keine doppelten Inhalte speichert. Wenn du den gleichen Wert mehrmals hinzufügst, wird es nur einmal gespeichert. Solange du dort keine eigenen Objekte reinpacken willst, sollte das keine Probleme geben.

Java:
double a1 = 23.2;
double a2 = 10;

HashSet<Double> set = new HashSet<>(6);
set.add(a1);
set.add(a2);

if(set.size() >= 3) {
   System.out.println("Glück gehabt.");
}
 
Zuletzt bearbeitet:

Androbin

Bekanntes Mitglied
Basierend auf Ruzmanz Variante mit dem HashSet 8
Java:
ArrayList<Double> set = new ArrayList<Double>();

for ( int i = 0; i < 6; i++ )
	set.add ( Math.random() * 6 );

if ( set.size() >= 3 )
	 System.out.println( "Mehr als 3 Gleiche" );
else System.out.println( "Weniger als 3 Gleiche" );
 

Gucky

Top Contributor
Ich meinte damit, dass du die 6 Variablen sortierst und somit nicht mehr per BruteForce alle Zahlen mit allen anderen vergleichen musst.
Sind sie sortiert, musst du nur ein mal über das Array iterieren und damit gucken, ob drei gleiche zu finden sind, weil diese nebeneinander wären.

Aber das HashSet geht natürlich auch (funktioniert sogar ähnlich, nur dass es die Werte vorher prüft und doppelte erst gar nicht rein lässt).
 

786Newbie

Mitglied
Java:
HashSet<Integer> set = new HashSet<>(6);
	set.add(i1);
	set.add(i2);
	set.add(i3);
	set.add(i4);
	set.add(i5);
	set.add(i6);
	   if(set.size() >= 3) {
}

also wenn ich es richtig verstande habe ist Hashset sowas wie ein array wobei es keinen wert doppelt nimmt, dadurch würden also im set nur noch 4 sein, und da es größer als 3 ist erfüllt es die bedingung?
falls ich es richtig verstande habe heißt es doch dass wenn es 5 oder 6 gleiche werte sind dass es gar nicht aufgeht mit "mindestens 3 gleiche werte" ?
 

Gucky

Top Contributor
Bei fünf gleichen Werten ist das HashSet nur noch zwei Indizes groß.
Bei vier gleichen Werten ist das HashSet nur noch drei Indizes groß.
...

Vergleichen kann man das HashSet IMHO besser mit einer List. ;)
 

Natac

Bekanntes Mitglied
also wenn ich es richtig verstande habe ist Hashset sowas wie ein array wobei es keinen wert doppelt nimmt, dadurch würden also im set nur noch 4 sein, und da es größer als 3 ist erfüllt es die bedingung?
Eher nein. Ein HashSet (Set = Menge), ist eine Menge von Werten ("Hash" sagt nur etwas über die Art der Implementierung aus).

Und genau wie bei einer Menge, gilt für jedes Set (nicht nur HashSet):
- Jeder Wert kommt nur einmal vor (deswegen gibt es keine Dopplungen)
- Die Werte haben keine bestimmte Ordnung (also gar nicht wie ein Array)

Aber natürlich sind beides Container, die mehrere Daten aufnehmen. ;)
 

dogmi

Mitglied
Versuch mal sowas in der Art: Schreib grad nur Pseudo, kann also Syntaktisch falsch sein.
Vorteil ist man hat nur eine Schleife, zumindest im Code.


//setzen der Werte
ArrayList<Long> set = new ArrayList();
set.add(Math.random()*6);
set.add(Math.random()*6);
set.add(Math.random()*6);
set.add(Math.random()*6);
set.add(Math.random()*6);
set.add(Math.random()*6);

set.sort(); //irgend eine Klasse hat die sort FunKtion schon, kann man aber auch selber überschreiben


int matches = 0; //wieviel treffer man bei einer Zahl hat
for(int i = 0; i < set.size(); i++) {

if (matches != 3) // prüfen, ob wir es geschafft haben, beim ersten durch lauf nicht, logisch
{
matches = 1; //erste Zahl ist immer ein Treffer, und überschreiben der Durchläufe von vorher
int a = i;
for( a < set.size(); a++)
{
if ( set.get(i) == set.get(a) )
{ //gleiche Zahlen stehen hintereinander
matches++
}
else
{
i = a; //i gleich auf a setzen sind wir eh schon durch
break;
}
}

}
else
{ // eventuell mit boolean arbeiten
System.out.println("Glück gehabt.");
}
}
 
Zuletzt bearbeitet:

786Newbie

Mitglied
Mit anderen worten
statt:
Code:
 if(set.size() >= 3) {
einfach das schreiben :
Code:
 if(set.size() <= 3) {

dann aktivierts sich jedes mal wenn es mindestens 3 gleiche gibt, da dann nur noch 3 oder weniger im set drinnen sind?
 

Gucky

Top Contributor
Genau so ist es. Aber ich glaube, es müsste
Code:
if (set.size() <= 4)
sein.
Denn:
Code:
1 2 3 3 3 4
wird im Set zu
Code:
(1 2 3 4).size() == 4
.

[EDIT]
Was passiert eigentlich, wenn
Code:
1 1 2 2 3 3
ins Set geschrieben werden soll? Dann ist die Größe auch 3 oder hab ich da einen Denkfehler drin?
[/EDIT]
 
Zuletzt bearbeitet:

786Newbie

Mitglied
@Gucky :
daran hab ich gar nicht gedacht :eek:
dann kann ich set nicht benutzen da ich nach dem hier eine if-abfrage brauche mit " falls nicht mindestens 3 gleich sind"
 

Gucky

Top Contributor
Da der Bereich, in dem sich die Zufallszahlen bewegen sehr klein ist, halte ich den folgenden Vorschlag für den Besten.

Java:
int[] zahlen = new int[6];
for (int tempInt : zufallszahlenList) {
  zahlen[temp]++;
}

for (int tempInt : zahlen) {
  if (temp >=3) tuWas();
  else tuWasAnderes();
}

Die beiden Schleifen sind kombinierbar aber der besseren Lesbarkeit wegen habe ich sie getrennt.
Falls es noch bessere Möglichkeiten gibt, bin ich offen für diese. :D
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Das sind sog. for-each Schleifen. Mehr dazu bei Google.

Es wird ein mal das Array durchlaufen und dabei die einzelnen Vorkommen der Zahlen gezählt. Dann wird über das andere Array iteriert und geguckt, ob eine Zahl häufiger als drei Mal vorhanden ist. ;)
 

turtle

Top Contributor
Java:
	@Test
	public void test() {
		Set<Integer> set = new HashSet<>();
		int multiple = 1;
		if (!set.add(1)) multiple++;
		if (!set.add(2)) multiple++;
		if (!set.add(3)) multiple++;
		if (!set.add(3)) multiple++;
		if (!set.add(3)) multiple++;
		if (!set.add(4)) multiple++;
		// Mindestens drei gleiche
		assertTrue("Doppelt sind nur " + multiple, multiple >= 3);
	}
 

turtle

Top Contributor
Oops, mein Test war leider falsch;-(

Das fehlerhafte Ding zählte ALLE unterschiedlichen zahlen!

Also bei 1,2,2,3,3,4 werden 3 Unterschiede gefunden, obwohl nur zwei unterschiedliche Zahlen vorhanden sind. Asche auf mein Haupt.

Meine Korrektur merkt sich nun für jede Zahl (in einer Hashmap) wie oft diese Zahl vorkommt.

Beim ersten Mal ist eine Zahl nicht vorhanden, also speichere ich die Zahl mit Vorkommen=0. Anschließend erhöhe ich das Vorkommen um eins. Zum Schluss muss ich nur über die Hashmap laufen und den Eintrag mit dem höchsten Vorkommen suchen und dieser muss mindestens drei sein. Diese Zahl wird an die Methode multipleValues übergeben, damit ich das schön per jUnit testen kann.

Java:
	@Test
	public void test1() {
		int i1 = 1;
		int i2 = 2;
		int i3 = 2;
		int i4 = 3;
		int i5 = 3;
		int i6 = 3;
		multipleValues(3, i1, i2, i3, i4, i5, i6);
	}

	@Test
	public void test2() {
		int i1 = 1;
		int i2 = 2;
		int i3 = 2;
		int i4 = 3;
		int i5 = 3;
		int i6 = 4;
		multipleValues(2, i1, i2, i3, i4, i5, i6);
	}

	@Test
	public void test3() {
		int i1 = 3;
		int i2 = 3;
		int i3 = 3;
		int i4 = 3;
		int i5 = 3;
		int i6 = 3;
		multipleValues(6, i1, i2, i3, i4, i5, i6);
	}

	private void multipleValues(int expectMultiple, int i1, int i2, int i3, int i4, int i5, int i6) {
		Map<Integer, Integer> map = new HashMap<>();
		putAndIncrement(i1, map);
		putAndIncrement(i2, map);
		putAndIncrement(i3, map);
		putAndIncrement(i4, map);
		putAndIncrement(i5, map);
		putAndIncrement(i6, map);
		Set<Entry<Integer, Integer>> keySet = map.entrySet();
		int multiple = -1;
		for (Entry<Integer, Integer> entry : keySet) {
			if (entry.getValue() > multiple) {
				multiple = entry.getValue();
			}
		}
		assertTrue("Doppelt sind nur " + multiple, multiple == expectMultiple);
	}

	private void putAndIncrement(int x, Map<Integer, Integer> map) {
		Integer integer = map.get(x);
		if (integer == null) {
			map.put(x, 0);
		}
		map.put(x, map.get(x) + 1);
	}
 
Zuletzt bearbeitet:

786Newbie

Mitglied
@Gucky danke, wusst gar nicht was for-each schleifen sind bzw wie sie funktionieren :)

irgendwie gefühl dass es ziehmlich peinlich ist,dass ich das nicht verstehe ^^
naja hab versucht jetzt schritt für schritt mit dein Programm zu gehen, damit du siehst wo ich was falsch verstanden hab, und mich Zusammmen scheisen kannst :D


Bsp die 6 Zufalls zahlen sind : 1 ,1,2,2,3,3:

-- array Zahlen mit 6 Speicherplätzen reserviert
-- die 6 variablen werden in Zufallszahlenlist hinzugefügt , wobei es alles doppelte nicht hinzufügt
-- in der schleife hat dann tempInt jeweils den wert 1,2,3:
-- und dabei wird temp immer um eins erhöht
zahlen[1]
zahlen[2]
zahlen[3]

2te forschleife:
-- tempInt wird jeweils zum wert von array Zahlen
-- temp = 3 wegen vorherige schleife
--tempInt=1 if(temp>=3)
-- tempInt=2 if(temp>=3)
-- tempInt=3 if(temp>=3)
 

Gucky

Top Contributor
Eigentlich nicht ;)

Mein Programm speichert zuerst die Zufallszahlen in einer List. Und zwar alle.
Dann läuft es ein mal über die List und erhöht immer an dem Index eines Arrays, der durch die aktuelle Zahl in der List beschrieben wird, den Wert um eins. Da habe ich mich verschrieben. temp müsste tempInt heißen. Asche auf mein Haupt.

In der nächsten Schleife wird das Array, in welchem zuvor die Zahlen gezählt wurden, abgelaufen und es wird geguckt, ob einer der Werte 3 oder größer ist.


Jetzt wissen wir auch, warum du es so schwer hattest das zu verstehen. Das war mein Fehler. Tut mir leid. ;)
 

786Newbie

Mitglied
//Falls mindestens 3 gleich sind
ArrayList<Integer> zufallszahlenList = new ArrayList<>(6);
zufallszahlenList.add(i1);
zufallszahlenList.add(i2);
zufallszahlenList.add(i3);
zufallszahlenList.add(i4);
zufallszahlenList.add(i5);
zufallszahlenList.add(i6);

int[] zahlen = new int[6];
for (int tempInt : zufallszahlenList) {
zahlen[tempInt]++;
}
for (int tempInt : zahlen) {
if (tempInt >=3) { tuWas();}
else {tu was anderes }

habs so gemacht jetzt aber hab da wieder was falsch ;(
würde das ding nicht wie ne arbeit zählen hätt ich glaub schon längst aufgegeben xD
 

Gucky

Top Contributor
"hab da wieder was falsch"

Was ist falsch?
Welche Meldungen bekommst du?

Und es muss
Code:
zahlen[tempInt - 1]++;
sein. :D Ich hatte wieder einen Fehler drin. Der Fehlerteufel meint es nicht gut mit mir.:oops:

Ferner musst du die Methoden
Code:
tuWas()
Code:
tuWasAnderes()
natürlich noch implementieren. Außerdem hast du die Klammern der zweiten Methode vergessen.

UND: Java Code in Java-Tags! So, wie es über jedem Beitragseditierenfeld dick und fett in rot steht!
 

786Newbie

Mitglied
sry! :O tags vergessen :bloed:

alsooo:
wenn ich
Code:
zahlen[tempInt - 1]++;
mache kommt jedes mal fehler wenn ich key drücke xD
wenn ich
Code:
zahlen[tempInt ]++;
mache, startet es IMMER
Code:
tuwasanderes()
ändere ich
Code:
f (tempInt >=3)
zu
Code:
f (tempInt <=3)
startet es IMMER
Code:
tuwas()

ich hab das alles dann mit system.out.println gekuckt was das jetzt wirklcih macht
also halt geschaut bei welche variablen es welche methode starten würde
und nach meinen kleinen wissen kommt da wirres zeug raus :toll:

ja ich weis hab des frei geschriebe im beim posten, da ich in echt an dieser stelle langer code da hab, was ich noch nicht als methode implementiert habe und zu faul war des zu kopieren =D
 

Gucky

Top Contributor
Kannst du noch einmal den betreffenden Code posten, der den Fehler verursacht? Also die beiden Schleifen?

Die Wahrscheinlichkeit, dass es wirklich drei gleiche Zahlen im Array sind, ist relativ klein. Lass dir mal mit einem Sysout zusätzlich die List und das Array ausgeben.

Schreib mal zu Testzwecken manuell drei gleiche Zahlen in die List.
 

786Newbie

Mitglied
Java:
ArrayList<Integer> zufallszahlenList = new ArrayList<>(6);
	 zufallszahlenList.add(i1);
	 zufallszahlenList.add(i2);
	 zufallszahlenList.add(i3);
	 zufallszahlenList.add(i4);
	 zufallszahlenList.add(i5);
	 zufallszahlenList.add(i6);
    	
    	int[] zahlen = new int[6];
    	for (int tempInt : zufallszahlenList) {
    	  zahlen[tempInt ]++;
    	}
    	for (int tempInt : zahlen) {
    		if (tempInt >=3) {
                    System.out.prinltn(i1+""+i2...........+""+tempInt +"mind 3 gleiche")
                  }
               else {System.out.prinltn(i1+""+i2...........+""+tempInt +"keine 3 gleiche")
               }
hab ja system.out.println gemacht umzu sehen was es überhaupt macht aber da kam iwie wirres zeug :bahnhof:
 

Gucky

Top Contributor
Es muss
Code:
zahlen[tempInt - 1]++;
heißen, wie ich oben schon geschrieben habe.

Was für wirres Zeug? Poste das mal.
 

786Newbie

Mitglied
wenn ich
Code:
zahlen[tempInt - 1]++;
bei diesem code mache, und dann irgendwann enter drücke, kommt in eclipse in der konsole gaaanz viele fehler, deswege hatt ich wieder raus gemacht
wirres zeug wie:

Java:
000004mindestens 3gleiche
000004keine 3gleiche
000004keine 3gleiche
000004keine 3gleiche
000004keine 3gleiche
000004keine 3gleiche

Java:
/Falls mindestens 3 gleich sind
	 ArrayList<Integer> zufallszahlenList = new ArrayList<>(6);
	 zufallszahlenList.add(i1);
	 zufallszahlenList.add(i2);
	 zufallszahlenList.add(i3);
	 zufallszahlenList.add(i4);
	 zufallszahlenList.add(i5);
	 zufallszahlenList.add(i6);
    	
    	int[] zahlen = new int[6];
    	for (int tempInt : zufallszahlenList) {
    	  zahlen[tempInt ]++;
    	}
    	for (int tempInt : zahlen) {
    		if (tempInt >=3) {
    			System.out.println(i1+""+i2+""+i3+""+i4+""+i5+""+i6+""+"mindestens 3gleiche");
    	  
    			if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    				if (alreadyPressed == false) {
    					versuch.setPunkte1(punkte);
    					versuch.setMittelfeldinfo("Spieler1 war schneller!");
    					versuch.setNewround("Drücke die taste S für eine weitere Runde");
    					repaint();
    					stopAnimation();
    				}
    				alreadyPressed = true;
    			}
    			if (e.getKeyCode() == KeyEvent.VK_SPACE) {
    				if (alreadyPressed == false) {
    					versuch.setPunkte2(punkte);
    					versuch.setMittelfeldinfo("Spieler2 war schneller!");
    					versuch.setNewround("Drücke die taste S für eine weitere Runde");
    					repaint();
    					stopAnimation();
    				}
    				alreadyPressed= true;
    			}
    		}
    		// falls NICHT mindestens 3 gleich sind
    		else {
    			System.out.println(i1+""+i2+""+i3+""+i4+""+i5+""+i6+""+"keine 3gleiche");
    			if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    				if (alreadyPressed == false) {
    					versuch.machwenigerPunkte1(punkte);
    					stopAnimation();
    					versuch.setMittelfeldinfo("Das war schlecht Spieler1! Versuchs nochmal!");
    					versuch.setNewround("Drücke die taste S für eine weitere Runde");
    					repaint();
    				}
    				alreadyPressed= true;
    			}
    			if (e.getKeyCode() == KeyEvent.VK_SPACE) {
    				if (alreadyPressed == false) {
    					versuch.machwenigerPunkte2(punkte);
    					stopAnimation();
						versuch.setMittelfeldinfo("Das war schlecht Spieler2! Versuchs nochmal!");
						versuch.setNewround("Drücke die taste S für eine weitere Runde");
						repaint();
    				}
    				alreadyPressed= true;
    			}
    		}
    	}
	}
 

Gucky

Top Contributor
Von wo bis wo gehen die Zufallszahlen? Gehen die von 0 - 6 oder von 1 - 6?

Poste auch mal die Erstellung der Zufallszahlen.

Willst du nach dem Finden einer Zahl, die häufiger als drei mal vorhanden ist, aufhören oder willst du dann weitersuchen?
 

786Newbie

Mitglied
Java:
public void run(){
		while (true) {
			//Zufalls zahlen der 6 kästen			
			 i1=(int) (Math.random()*6);//zufallszahl
			 i2=(int) (Math.random()*6);//zufallszahl
			 i3=(int) (Math.random()*6);//zufallszahl
			 i4=(int) (Math.random()*6);//zufallszahl
			 i5=(int) (Math.random()*6);//zufallszahl
			 i6=(int) (Math.random()*6);//zufallszahl	
			repaint();
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				}
		}
	}
die zufallszahlen ändern sich jede sekunde

jede jede zahl steht für ein bild , und es gibt 6 "kästchen" worin sich 6 bilder jede 6sekunde ändern,
denk mal daher dass es immer wieder neu suche soll
 

Gucky

Top Contributor
Du hast die Schleifen falsch aufgebaut. Die Reaktion auf keine drei gleichen Zahlen darf erst nach dem Durchlauf der Schleife, in der die Anzahlen der einzelnen Zahlen analysiert werden, stehen. Und dann willst du aufhören, nachdem du eine Zahl gefunden hast, die häufiger als drei Mal vorkommt. Soll heißen: danach musst du aus der Methode mit return rausspringen.

Zudem muss das Array doch keine 6 Elemente lang sein, sondern 7.
 

Harry Kane

Top Contributor
So jetzt mal ein paar Basics:
1. Math.random() liefert eine Zahl >= 0 und < 1. Beim casten nach int werden die Nachkommastellen einfach abgeschnitten. (int)(Math.random()*anInteger) liefert deshalb einen Wert zwischen 0 und anInteger - 1. Wenn die Nummer der zahlen in einem Array gezählt werden soll, ist deshalb die Deklaration int[anInteger - 1] richtig.
2. @Gucky: Dein Ansatz ist zwar richtig, dein Code hat aber zwei massive Bugs. Hast du das jermals getestet?
Mit
Java:
    int[] zahlen = new int[6];
    for (int tempInt : zufallszahlenList) {
      zahlen[tempInt]++;
    }
     
    for (int tempInt : zahlen) {
      if (temp >=3) tuWas();
      else tuWasAnderes();
    }
fragst du zwar Werte aus dem Array ab und erhöhst sie um eins, sie werden aber nicht in das Array zurückgeschrieben! Ausserdem müssen die Werte erst erhöht und dann zurückgegeben werden, also so:
Java:
    int[] zahlen = new int[6];
    for (int tempInt : zufallszahlenList) {
      zahlen[tempInt] = ++zahlen[tempInt];
    }
     
    for (int tempInt : zahlen) {
      if (temp >=3) tuWas();
      else tuWasAnderes();
    }
Es ist auch nicht nötig, die Zufallszahlen zuerst in einer separaten Datenstruktur abzulegen, sondern der entsprechende Index in einem Array mit der Anzahl der "Treffer" kann direkt erhöht werden:
Das hier funktioniert bei mir wie erwartet:
Java:
public class Zufallszahlenerzeugung {

        public static void main(String[] args){
            int max = 6;
            int loops = 6;
            int[] counts = new int[max];
            for(int i = 0; i < loops; i++){
                int index = (int)(Math.random()*max);
                System.out.println("Loop " + i+ ", value " + index);
                counts[index] = ++counts[index];
            }
            System.out.println(Arrays.toString(counts));
        }
}
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
So jetzt mal ein paar Basics:
1. Math.random() liefert eine Zahl >= 0 und < 1. Beim casten nach int werden die Nachkommastellen einfach abgeschnitten. (int)(Math.random()*anInteger) liefert deshalb einen Wert zwischen 0 und anInteger - 1. Wenn die Nummer der zahlen in einem Array gezählt werden soll, ist deshalb die Deklaration int[anInteger - 1] richtig.
Uff. Richtig müsste es natürlich int[anInteger] heissen. Aber zumindest in dem Codebeispiel ist es richtig.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J 28 Variablen vergleichen und die höchsten addieren Allgemeine Java-Themen 15
C Erste Schritte Variablen in abhängigkeit von Git branch Allgemeine Java-Themen 7
Fabiator Variablen Variablen Zählen Allgemeine Java-Themen 3
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
berserkerdq2 Labels in IJVM sind keine lokalen Variablen oder? Allgemeine Java-Themen 2
O Fehler bei Variablen Allgemeine Java-Themen 2
N File Path mit Variablen angeben Allgemeine Java-Themen 1
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
R Geometry erstellen die abhängig von Variablen ist Allgemeine Java-Themen 6
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
P static Blocks und variablen Allgemeine Java-Themen 41
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
V Datentypen Graphikrechner 2/Strings und Variablen in Doubles umwandeln Allgemeine Java-Themen 6
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
D BlueJ, Variablen die mehrfach vorkommen gleichzeitig umbenennen Allgemeine Java-Themen 3
C Variablen Variablen mit unendlichem Wert Allgemeine Java-Themen 22
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
T Maximale Felder maximale Variablen Allgemeine Java-Themen 2
W Lebendige Variablen herauslesen Allgemeine Java-Themen 1
K Summierung einer Variablen Allgemeine Java-Themen 5
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
Messoras Klassen Sämtliche Variablen einer Klasse übernehmen Allgemeine Java-Themen 6
K Static Variablen verbieten Allgemeine Java-Themen 10
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
A Best Practice Variablen vertauschen - Performance Allgemeine Java-Themen 1
F Variablen Variablen schachteln Allgemeine Java-Themen 6
C Threads Variablen in einem Thread Aktualisieren Allgemeine Java-Themen 17
M Variablen Variablen in Text einbinden Allgemeine Java-Themen 5
K Überschreiben von Variablen bei rekursivem Funktionsaufruf Allgemeine Java-Themen 2
R Übergreifende Variablen? Allgemeine Java-Themen 10
OnDemand Input/Output Variablen in Datei Speichern um sie wieder auszulesen Allgemeine Java-Themen 4
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
iB0T "goto" Befehl aus Batch in Java und Variablen wert immer wieder neu setzen Allgemeine Java-Themen 4
D ClassLoader für Variablen einer Klasse setzen Allgemeine Java-Themen 24
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
D Alle Variablen final setzen ? Allgemeine Java-Themen 26
C Kapselung Warum graift man auf Variablen nur über Methoden und nich direkt zu? Allgemeine Java-Themen 10
C Classloading und statische Variablen Allgemeine Java-Themen 2
K Variablen speichern Allgemeine Java-Themen 2
S Variablen bei Aufruf zurücksetzen Allgemeine Java-Themen 4
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
V Gibt es einen Variablen Cast? Allgemeine Java-Themen 8
K Mehrere JVMs die auf eine Klasse mit statischen Variablen zugreift Allgemeine Java-Themen 19
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
M Generische Methoden mit Java und globale Variablen Allgemeine Java-Themen 9
J Statische Variablen, Threadübergreifend. Allgemeine Java-Themen 4
E Variablen anderer Klassen auslesen (nur Name bekannt) Allgemeine Java-Themen 4
P Variablen in einer anderen Klasse auf Änderungen überwachen Allgemeine Java-Themen 12
V Typargument einer Variablen erfragen Allgemeine Java-Themen 4
B Rechnen mit mehreren Variablen Allgemeine Java-Themen 2
G Thread variablen Sichtbarkeit Allgemeine Java-Themen 15
J Java Pfad nicht mehr in Path Variablen??? Allgemeine Java-Themen 2
T Mit JNI finale Variablen überschreiben Allgemeine Java-Themen 14
T JNI -> auf Java-Variablen etc zugreifen Allgemeine Java-Themen 6
M Bezeichnung für Component-Variablen Allgemeine Java-Themen 6
M Variablen an Java-Programm übergeben Allgemeine Java-Themen 3
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
A Überschreibung von Variablen Allgemeine Java-Themen 3
A JavaCC: Variablen zaehlen Allgemeine Java-Themen 12
B globale und lokale Variablen Allgemeine Java-Themen 17
G referenz von variablen Allgemeine Java-Themen 9
O getRuntime().Exec() - Environment - Variablen setzen? Allgemeine Java-Themen 2
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
M Variablen Speicher wieder freigeben ? Allgemeine Java-Themen 9
N Variablen eines Objektes (instanz) in einen Array lesen Allgemeine Java-Themen 7
S In Subklasse auf private Variablen zugreifen Allgemeine Java-Themen 4
S Variablen und ihre Tücken. Allgemeine Java-Themen 7
C Binärbereich einer Variablen abfragen Allgemeine Java-Themen 8
J Zugriff auf den Namen einer Variablen Allgemeine Java-Themen 7
J Überschreiben von Variablen Allgemeine Java-Themen 3
C dynamische variablen Namen! Allgemeine Java-Themen 4
M Int und String Variablen verändern Allgemeine Java-Themen 10
H zwei Date Variablen überschreiben sich Allgemeine Java-Themen 2
G Taushen der Input variablen einer method Allgemeine Java-Themen 14
P Objekt- Variablen Allgemeine Java-Themen 16
K Environment Variablen per java -D weitergeben Allgemeine Java-Themen 9
D in class-Dateien nach variablen suchen! Allgemeine Java-Themen 5
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7
T Größe eine Variablen in Bytes? Allgemeine Java-Themen 22
B Reguläre ausdrücke mit variablen? Allgemeine Java-Themen 12
MQue JButton an verschiedenen Variablen Allgemeine Java-Themen 2
T Unabhängigkeit von Variablen/ Objekten. Allgemeine Java-Themen 6
G Frage zu statischen Variablen bei Vererbung Allgemeine Java-Themen 15
L Sichtbarkeit von Variablen / getMethode Allgemeine Java-Themen 4
H Variablen (A1, A2, A3 mit A_irgendetwas aufrufen) ohne Array Allgemeine Java-Themen 5
M Variablen in einer .doc Vorlage ersetzen Allgemeine Java-Themen 4
A Reflection - Variablen innerhalb einer Methode ermitteln Allgemeine Java-Themen 9
E Zugriff auf Variablen äusserer Klassen Allgemeine Java-Themen 2
M Variablen in Klasse verpacken? Allgemeine Java-Themen 10
F Allegemeiner Datentyp für Objekte und Primitive Variablen Allgemeine Java-Themen 6
W Array mit Variablen aus Vararg füllen Allgemeine Java-Themen 4
S Problem mit Boolean Variablen Allgemeine Java-Themen 8
A [SOLVED] Classpath und statische Variablen Allgemeine Java-Themen 6
J variablen wert ändernung mit einer art actionlistener? Allgemeine Java-Themen 4
C klassenübergreifende variablen Allgemeine Java-Themen 3
T ungewollter Zugriff auf private Variablen? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben