Arbeiten mit Random

monsterherz

Aktives Mitglied
Er meckert das er nicht mit random und int arbeiten kann. Wie kriege ich es hin ?

Zufall.java:12: error: bad operand types for binary operator '<'
if (wert < zufallszahl)
^
first type: int
second type: Random
Zufall.java:16: error: bad operand types for binary operator '>'
else if(wert > zufallszahl)
^
first type: int
second type: Random
3 errors

Java:
import java.util.Random;
import java.util.Scanner;

public class Zufall{
public static void main (String[] args) {
        Scanner neuer_scan=new Scanner(System.in);
        System.out.println("Bitte gib eine Zahl zwischen 1 und 10 ein");
        int eingabe;
        eingabe=neuer_scan.nextInt();
        Random zufallszahl=new Random();
        int wert=zufallszahl.ints(1, 0, 10).forEach(System.out::println);
        if (wert < zufallszahl)
        {
    System.out.println("Die Zahl ist zu klein");
        }
    else if(wert > zufallszahl)
        {
    System.out.println("Die Zahl ist zu groß");
        }
    else
    {
    System.out.println("Ja, Richtig");
        }
}
}
 

LimDul

Top Contributor
Random zufallszahl=new Random();
int wert=zufallszahl.ints(1, 0, 10).forEach(System.out::println);
if (wert < zufallszahl)
Die Zeilen in der Form sind so nicht passend.

Die erste Zeile erzeugt ein Objekt vom Typ Random - keine Zahl. Besserer Name währe daher zufallszahlenGenerator.

Die nächste Zeile ist kompletter Unfug. Sie erzeugt vom Zufallszahlen generator einen Stream mit einer Zahl im Bereich von 0 bis 9 und gibt diese Zahl auf der Konsole auf. Eine Rückgabe gibt es nicht, daher kompiliert die Zeile nicht.

Die letzte Zeile vergleicht einen int mit einem Objekt - das kann nciht glauben.

Die Eingabe wiederrum, die aus dem Scanner ausgelesen wird, wird gar nicht verwendet.

Was du vermutlich willst ist eine Zufallszahl im Bereich 0 bis 9:

Java:
Random zufallszahlenGenerator = new Random();
int zufallszahl = Random.nextInt(10);

Und dann diese Zufallszahl vermutlich mit der Eingabe vergleichen.
 

monsterherz

Aktives Mitglied
ok, danke erstmal. Jetzt meckert er anders:
Zufall.java:13: error: non-static method nextInt(int) cannot be referenced from a static context
int zufallszahl=Random.nextInt(10);
^
1 error
 

KonradN

Super-Moderator
Mitarbeiter
Um eine nicht statische Methode aufzurufen braucht man eine Instanz. Die ist da ja schon erzeugt worden. Nur wenn man Code direkt im Forum schreibt, dann wird leicht etwas falsches kopiert. So Fehler solltest Du aber langsam durchaus selbst erkennen - du bist ja schon paar Tage länger an Java dran.

Java:
Random zufallszahlenGenerator = new Random();
int zufallszahl = zufallszahlenGenerator.nextInt(10);

nextInt wird auf der Instanz aufgerufen, die Du in der Zeile davor erstellt hast.
 

monsterherz

Aktives Mitglied
Ich dachte wenn ich die while Schleife einfüge wird solange gefragt bis die Eingabe ok ist. Und bei einer Zahl von 0-10 sollte das ja maximal 11 mal geschehen. Aber anscheinend hab ich da noch nen Denkfehler drin ...

Java:
 while (eingabe != zufallszahl){
        if (eingabe < zufallszahl)
        {
    System.out.println("Die Zahl ist zu klein");
        }
    else if(eingabe > zufallszahl)
        {
    System.out.println("Die Zahl ist zu groß");
        }
    else
    {
    System.out.println("Ja, Richtig");
        }
 

Anhänge

  • Screenshot from 2023-02-08 16-35-18.png
    Screenshot from 2023-02-08 16-35-18.png
    138,1 KB · Aufrufe: 3

Neumi5694

Top Contributor
Wann erfolgt denn in dieser Schleife die neue Eingabe? Im geposteten Code jedenfalls gar nicht.


ps: Wenn mindestens einmal und gegebenenfalls öfter was gemacht werden soll, bietet sich "do-while" anstatt "while" an.
Bei "while" kann es passieren, dass die Schleife niemals betreten wird, wenn die Bedingung von Anfang an falsch ist.
 

httpdigest

Top Contributor
Und bei einer Zahl von 0-10 sollte das ja maximal 11 mal geschehen.
Auch das ist nicht notwendigerweise so. Wenn du elf Mal eine Zufallszahl von 0-10 ziehst, dann bekommst du nicht eine Permutation aller Zahlen von 0-10.
Genauso wie beim Lotto 6aus49 innerhalb von 49 Ziehungen ja nicht alle 49 Zahlen als erste Zahl einmal gezogen werden.
java.util.Random ist nur asymptotisch gleichverteilt. Es kann durchaus sein, dass du bei 11 Ziehungen von random.nextInt(10) drei oder viermal dieselbe Zahl bekommst.
 

monsterherz

Aktives Mitglied
Auch das ist nicht notwendigerweise so. Wenn du elf Mal eine Zufallszahl von 0-10 ziehst, dann bekommst du nicht eine Permutation aller Zahlen von 0-10.
Genauso wie beim Lotto 6aus49 innerhalb von 49 Ziehungen ja nicht alle 49 Zahlen als erste Zahl einmal gezogen werden.
java.util.Random ist nur asymptotisch gleichverteilt. Es kann durchaus sein, dass du bei 11 Ziehungen von random.nextInt(10) drei oder viermal dieselbe Zahl bekommst.
Achso, ist verständlich
 

monsterherz

Aktives Mitglied
Wann erfolgt denn in dieser Schleife die neue Eingabe? Im geposteten Code jedenfalls gar nicht.


ps: Wenn mindestens einmal und gegebenenfalls öfter was gemacht werden soll, bietet sich "do-while" anstatt "while" an.
Bei "while" kann es passieren, dass die Schleife niemals betreten wird, wenn die Bedingung von Anfang an falsch ist.
Gut, dank dir. Ich habe nochmal nachgedacht und den Code überarbeitet. Jetzt funzt es
Java:
import java.util.Random;
import java.util.Scanner;

public  class Zufall{

public static void main (String[] args) {
        Scanner neuer_scan=new Scanner(System.in);
        Random zufallszahlengenerator=new Random();
        int zufallszahl=zufallszahlengenerator.nextInt(10);
        System.out.println("Bitte gib eine Zahl zwischen 1 und 10 ein");
        int eingabe;
        eingabe=neuer_scan.nextInt();
while (eingabe != zufallszahl){
    System.out.println("Bitte gib eine Zahl zwischen 1 und 10 ein");
        eingabe=neuer_scan.nextInt();
        if (eingabe < zufallszahl)
        {
    System.out.println("Die Zahl ist zu klein");
        }
    else if(eingabe > zufallszahl)
        {
    System.out.println("Die Zahl ist zu groß");
        }
    else
    {
    System.out.println("Ja, Richtig");
        }
    }
}
}
:)
 

Anhänge

  • Screenshot from 2023-02-08 17-02-36.png
    Screenshot from 2023-02-08 17-02-36.png
    153,1 KB · Aufrufe: 1

LimDul

Top Contributor
Zumindest fast :)

Doku lesen ist immer hilfreich:

Code:
        int zufallszahl=zufallszahlengenerator.nextInt(10);
Liefert eine Zufallszahl Bereich von 0 bis 9. Wenn du eine von 1 bis 10 haben willst, musst 1 drauf addieren.

Siehe hier: https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html#nextInt(int)
public int nextInt(int bound)
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)
 

Neumi5694

Top Contributor
Nur als Denkanstoß:

So wär's mit do-while, da hast du eine Eingabeaufforderung weniger im Code:

Java:
int eingabe;
do {
    System.out.println("Bitte gib eine Zahl zwischen 1 und 10 ein");
    eingabe=neuer_scan.nextInt();>
    if (eingabe < zufallszahl) {
        System.out.println("Die Zahl ist zu klein");
    } else if(eingabe > zufallszahl) {
        System.out.println("Die Zahl ist zu groß");
    } else {
        System.out.println("Ja, Richtig");
    }
} while (eingabe != zufallszahl);
Alternativ könntest du in deinem Code anstatt der ersten Eingabe einfach einen ungültigen Wert zuweisen, wie etwa -999

... und falls dich die Eingabe hinterher überhaupt nicht mehr interessiert, kann man's auch komplett ohne zweite Prüfung machen, bzw. mit einer Endlosschleife, die man bei Erfolg abbricht.
Java:
do {
    System.out.println("Bitte gib eine Zahl zwischen 1 und 10 ein");
    int eingabe=neuer_scan.nextInt();
    if (eingabe < zufallszahl) {
        System.out.println("Die Zahl ist zu klein");
    } else if(eingabe > zufallszahl) {
        System.out.println("Die Zahl ist zu groß");
    } else {
        System.out.println("Ja, Richtig");
        break; //raus aus der Schleife
    }
} while (true); //Jede Art von Endlosschleife funktioniert hier, entweder "while (true){...}" oder "do{...}while(true);" oder auch "for(;;) {...}"


Warum ich das erwähne: Geh mal deinen Code durch. Annahme: Zufallszahl == 4, die erste Eingabe ist ebenfalls 4: Was wird alles auf den Bildschirm ausgegeben? Falls du nicht drauf kommst, weis die Werte einfach mal fix zu, sieh was passiert.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
T Mit jedem Wert in der for-Schleife weiter arbeiten Java Basics - Anfänger-Themen 3
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
B Zeitgleiches Arbeiten am Code mit mehreren Personen? Java Basics - Anfänger-Themen 7
D Erste Schritte Sinvolle Architektur und paketübergreifendes Arbeiten Java Basics - Anfänger-Themen 2
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
F Arbeiten mit Arrays Java Basics - Anfänger-Themen 2
B Kann man eine Tabelle in Eclipse erzeugen und damit arbeiten? Java Basics - Anfänger-Themen 8
P Erste Schritte Arbeiten mit Klassen Java Basics - Anfänger-Themen 8
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
G Graphische Darstellung (Arbeiten mit einem Window) Java Basics - Anfänger-Themen 1
N Mit der gleichen BlockingQueue in zwei Klassen arbeiten Java Basics - Anfänger-Themen 12
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
M Input/Output Arbeiten mit extrem vielen Dateien Java Basics - Anfänger-Themen 8
A Mit Enums in Methoden arbeiten Java Basics - Anfänger-Themen 8
D Wie mit Bibliotheken ohne API arbeiten? Java Basics - Anfänger-Themen 16
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
M Erste Schritte Arbeiten mit SuM (Stifte und Mäuse) Java Basics - Anfänger-Themen 20
S Arbeiten mit arrays Java Basics - Anfänger-Themen 4
D Arbeiten mit Twitter4J Java Basics - Anfänger-Themen 2
R mit klassen-instanzen arbeiten in packages Java Basics - Anfänger-Themen 10
H Arbeiten mit Properties Java Basics - Anfänger-Themen 8
hdi Worst-Performance-Award für Arbeiten mit ListModel Java Basics - Anfänger-Themen 7
G Mit Javadoc arbeiten Java Basics - Anfänger-Themen 13
L Arbeiten mit Vectoren in einer Hashtable Java Basics - Anfänger-Themen 2
Y Mit Interface arbeiten Java Basics - Anfänger-Themen 9
G mit Threads arbeiten Java Basics - Anfänger-Themen 2
N Herangehensweise - mit vielen Variablen arbeiten Java Basics - Anfänger-Themen 6
M Arbeiten mit ArrayList Java Basics - Anfänger-Themen 9
G mit Strings arbeiten Java Basics - Anfänger-Themen 7
G in Java mit Schnittstellen arbeiten Java Basics - Anfänger-Themen 5
G Arbeiten mit einem Fenster Java Basics - Anfänger-Themen 11
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
C Arbeiten mit MDI Java Basics - Anfänger-Themen 2
J Arbeiten mit Strings Java Basics - Anfänger-Themen 5
E Aus Datei einlesen und weiter mit arbeiten! Java Basics - Anfänger-Themen 15
Z In Bild-dateien(jpg) zeichnen und arbeiten. Java Basics - Anfänger-Themen 4
A Arbeiten mit mehreren Klassen Java Basics - Anfänger-Themen 4
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
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

Ähnliche Java Themen

Neue Themen


Oben