Nach doppelter Zahl eine Ausgabe

newcomerJava

newcomerJava

Mitglied
Hallo,
ich bin neu hier und studiere neu Informatik.
Deshalb nicht wundern wenn euch die Frage zu dumm vorkommt.
In meiner Übungsaufgabe steht ich solle einen 20 seitigen Würfel solange werfen bis genau zweimal hintereinander die gleiche Zahl kommt.

Ausgabenform:
14. Wurf ist eine 14
15. Wurf ist eine 2
16. Wurf ist eine 12
17. Wurf ist eine 10
18. Wurf ist eine 10
Es kam zweimal hintereinander eine 10

Mir ist bewusst ich muss eine while Schleife benutzen, da es nicht sicher ist wie viele Durchläufe ich habe bis zweimal die selbe Zahl angezeigt wird.
Was ich nicht weiß: wie kann ich den letzten wurf in eine Variable speichern und die eigentliche Ausgabe so darstellen lassen.


nach zweimal gleicher Zahl -> "Es kam zweimal hintereinander eine 10":
public Class WuerfeBisZweimalSelbeZahl

public static void main(String[] args) {
int i = 1
int wurf

wurf = (int) (Math.random) * 20) +1;

do {
     wurf = (int) Math.random() * 20) +1;
     System.out.printf("%d. Wurf ist eine %d%n", i++, wurf);

// das hier ist sicher falsch, nur weiss ich nicht wie ich den letzten wurf definieren kann
} while (wurf == wurf);
  System.out.println("Es kam zweimal hintereinander eine 10");

}
}

I
 
J

JeromeC

Aktives Mitglied
Du bist der Lösung schon nahe. Erzeuge dir noch eine Variable und speichere den letzten Wurf darin. Dann kannst du diese Variable gegen den aktuellen Wurf prüfen.
 
kneitzel

kneitzel

Top Contributor
Damit du zwei Würfe vergleichen kannst, musst Du dir ja auch zwei Würfe merken können.

Derzeit merkst Du Dir nur einen Wurf in der Variable wurf. Mit der erneuten Zuweisung geht der bisherige Inhalt verloren.

Daher würde ich Dir raten, Dir den Ablauf sehr gut zu überlegen. Dazu würde ich gerade am Anfang nicht Java verwenden sondern normale Umgangssprache. Und das so exakt, dass jemand, der extrem vergesslich ist (Nur das, was er aufgeschrieben hat, kennt er) und die Aufgabenstellung nicht kennt (also keine Hilfe durch seine Intelligenz) das machen kann. Und da er so vergesslich ist: Wenn er etwas aufschreibt, dann muss da eine Beschreibung ran.

Also als Beispiel:
Schreib Zähler auf einen Zettel mit 0 dahinter.
Nimm die Zahl bei Zähler, addiere 1 und ersetze die bisherige Zahl. (Das wäre dann die Erhöhung des Zählers um eins)

Sowas kann man dann leicht in Java Übersetzen. Das erste wäre ein int zaehler = 0; Das Zweite ein zaehler = zaehler + 1;

Mit so einem "Spielchen" kann man selbst mit Stift und Zettel etwas nachvollziehen. Und das ohne das Problem zu haben, dass man Java Code noch nicht so gut lesen und verstehen kann ... (Später entfällt das auf der Ebene natürlich ... )
 
newcomerJava

newcomerJava

Mitglied
Du bist der Lösung schon nahe. Erzeuge dir noch eine Variable und speichere den letzten Wurf darin. Dann kannst du diese Variable gegen den aktuellen Wurf prüfen.
Wir haben bisher noch keine arrays man könne das mit einer einfachen whilschleife lösen..
Mein problem.. ich weiß nicht wie ich die würfe vergleiche um damit die aussage auspucken zu lassen. Ich muss sie definieren als vorheriger wurf und jetziger wurf aber wo mach ich das :(
Du bist der Lösung schon nahe. Erzeuge dir noch eine Variable und speichere den letzten Wurf darin. Dann kannst du diese Variable gegen den aktuellen Wurf prüfen.
 
kneitzel

kneitzel

Top Contributor
Wir haben bisher noch keine arrays man könne das mit einer einfachen whilschleife lösen..
Mein problem.. ich weiß nicht wie ich die würfe vergleiche um damit die aussage auspucken zu lassen. Ich muss sie definieren als vorheriger wurf und jetziger wurf aber wo mach ich das :(
Er hat nichts von einem Array gesagt. Du hast eine Variable wurf. Wie wäre es mit einer zusätzlichen Variablen alterWurf?
Und ehe Du in wurf einen neuen Wert reinschreibst, schreibst Du den Wert von wurf in alterWurf...
 
newcomerJava

newcomerJava

Mitglied
Er hat nichts von einem Array gesagt. Du hast eine Variable wurf. Wie wäre es mit einer zusätzlichen Variablen alterWurf?
Und ehe Du in wurf einen neuen Wert reinschreibst, schreibst Du den Wert von wurf in alterWurf...
so in etwa?:
public class Aufgabe3c {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int i = 1;
        int vorherigWurf;
        
        
        
        vorherigWurf = (int) (Math.random()*20) +1;   
        
        do {
            vorherigWurf  = (int) (Math.random() * 20) + 1;
            System.out.printf("%d. Wurf ist eine %d%n", i++, vorherigWurf);
            
            int jetzigerWurf = vorherigWurf ;
            System.out.printf("%d. Wurf ist eine %d%n", i++, jetzigerWurf);
            
        
        }    while (jetzigerWurf == vorherigWurf);
           System.out.println("Es kam zweimal hintereinander eine " + vorherigWurf);
        
    }

}


}


Da wird mir unten trotzdem ein Fehler angezeigt :(
Könntest du vielleicht auch in meinen Code rein schreiben.. dann wird mir das vielleicht deutlicher, was du meinst.
Das wäre sehr lieb bin nämlich total am verzweifeln hänge daran schon den ganzen Tag wie dumm das auch klingt :(
 
kneitzel

kneitzel

Top Contributor
Dann spiel das doch einmal durch. Was machst Du da denn jetzt?

Daher ist mein klarer Vorschlag, das man dies erst sehr genau Umgangssprachlich schreibt. Dann kann man das gut in Gedanken durchspielen.

Und neben dem Problem in der Logik, hast Du auch ein Problem mit dem Geltungsbereich der lokalen Variable jetzigerWurf. Da Du diese in einem Block deklariert hast, ist diese nur innerhalb des Blocks gültig, d.h. der Gültigkeitsbereich endet bei der }.
 
newcomerJava

newcomerJava

Mitglied
Du bist der Lösung schon nahe. Erzeuge dir noch eine Variable und speichere den letzten Wurf darin. Dann kannst du diese Variable gegen den aktuellen Wurf prüfen.
Meinst du das so ?
Ich hab das umgesetzt jedoch wird mir wie in meinem Kommentar schon erwähnt, "jetzigerWurf als keiner Variable zugeordnet
markiert obwohl ich das davor doch gemacht habe?

Java:
public class Aufgabe3c {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int i = 1;
        int vorherigWurf;
        
        
        
        vorherigWurf = (int) (Math.random()*20) +1;   
        
        do {
            vorherigWurf  = (int) (Math.random() * 20) + 1;
            System.out.printf("%d. Wurf ist eine %d%n", i++, vorherigWurf);
            
            int jetzigerWurf = vorherigWurf ;
            
            
        // warum wird mir "jetzigerWurf" als falsch unterkringelt also da steht es kann keiner veriable zugeordnet werden?
        }    while (jetzigerWurf == vorherigWurf);
           System.out.println("Es kam zweimal hintereinander eine " + vorherigWurf);
        
    }
    }
 
newcomerJava

newcomerJava

Mitglied
Dann spiel das doch einmal durch. Was machst Du da denn jetzt?

Daher ist mein klarer Vorschlag, das man dies erst sehr genau Umgangssprachlich schreibt. Dann kann man das gut in Gedanken durchspielen.

Und neben dem Problem in der Logik, hast Du auch ein Problem mit dem Geltungsbereich der lokalen Variable jetzigerWurf. Da Du diese in einem Block deklariert hast, ist diese nur innerhalb des Blocks gültig, d.h. der Gültigkeitsbereich endet bei der }.
ich blicke da irgendwie nicht durch
trotzdem vielen dank für deine Mühe
 
kneitzel

kneitzel

Top Contributor
Also Thema lokale Variable:
Java:
{
     int jetzigerWurf = vorherigWurf; // Diese lokale Variable ist nur in diesem Block gültig ...
} // Hier - hinter dem } - ist die Variable nicht mehr gültig!

Daher meckert er - denn das while ist nach der geschweiften Klammer und damit außerhalb des Blocks.
==> Deklariere die Variable bei der anderen Variable, also außerhalb des Blocks!

Desweiteren solltest Du Dir die Logik überlegen.
Du würfelst einmal - speicherst in vorheriger Wurf.
Dann in die Schleife - du würfelst noch einmal und überschreibst den vorherigen Wurf...
Dann machst Du eine Zuweisung ... und prüfst danach, ob die Werte gleich sind? Direkt nach der Zuweisung wird das immer der Fall sein!

Daher einfach noch einmal die Bitte, Java zu vergessen und erst einmal nur die Logik zu erarbeiten - ohne den Schwierigkeitsgrad von Java.

Also spiel es mit Kreidetafeln durch - derzeit ist Deine Logik:
1. Du nimmst dir zwei Kreidetafeln. Die erste nennst Du "aktueller Wurf" und die zweite "alter Wurf".
2. Du würfelst und schreibst den Wert auf die Tafel "alter Wurf".
3. Du würfelst und schreibst den Wert auf die Tafel "alter Wurf". (Der Wert aus 2 geht verloren)
4. Du schreibst den Wert von "alter Wurf" auf die Tafel "neuer Wurf".
5. Wenn "alter Wurf" und "neuer Wurf" den gleichen Wert aufweisen, dann machst Du bei 3. weiter.

Das scheint so ja nicht ganz stimmig zu sein. Bekommst Du die Logik verbessert, so dass man es erfolgreich durchspielen könnte?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 1
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2
C Lotto 3, 4, 5, 6 Richtige nach x Ziehungen ermittelt.. Java Basics - Anfänger-Themen 7
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
R JDK installieren Durcheinander nach installation von SE 14.02 Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
B DateTimeFormatter nach LocalDateTime, wenn dd.MM.yyyy oder dd.MM.yyyy mm:hh Java Basics - Anfänger-Themen 5
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
G unklares Verhalten nach Instanzierung neuer Klasse Java Basics - Anfänger-Themen 3
S Wohin kommt das „abstract“? Vor oder nach „public“/ „private“ /... Java Basics - Anfänger-Themen 3
S Datenbank Befehl nach Login Java Basics - Anfänger-Themen 5
N Operatoren Schreibtischtest der Reihen-Suche nach Aufschluss in die Basics Java Basics - Anfänger-Themen 1
B Umstieg von C# nach Java Java Basics - Anfänger-Themen 18
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
M Untersuchen ob ein Graph nach entfernen einer Kante immer noch zusammenhängend ist Java Basics - Anfänger-Themen 70
N Wörter und Zahlen nach speziellen Wörtern ausgeben Java Basics - Anfänger-Themen 11
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
B Nach dem kompilieren werden Bilder nicht mehr gefunden Java Basics - Anfänger-Themen 10
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
B String nach erstem Leerzeichen trennen Java Basics - Anfänger-Themen 7
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
UnknownInnocent Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
O zwei Arrays nach Werten durchsuchen und zusammenfügen Java Basics - Anfänger-Themen 3
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1
C Erste Schritte Bilder nach Export anzeigen Java Basics - Anfänger-Themen 0
F Input/Output Files von A nach B kopieren Java Basics - Anfänger-Themen 11
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
O ADT Graph nach größe Abfragen Java Basics - Anfänger-Themen 42
O compareTo nach mehreren Kriterien Java Basics - Anfänger-Themen 13
R Benutzereingaben als Array abspeichern nach Programmstart Java Basics - Anfänger-Themen 5
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
L Arrayliste von hinten nach vorne ausgeben Java Basics - Anfänger-Themen 10
F Array nach Objektattribut durchsuchen Java Basics - Anfänger-Themen 6
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
O String von vorne nach hinten an einem Zeichen Java Basics - Anfänger-Themen 10
Hanschyo Quicksort sortiert von groß nach klein Java Basics - Anfänger-Themen 3
S suche nach varible POSITION ... fuer das pixel-maennchen Java Basics - Anfänger-Themen 4
A Einträge aus Tupeln nach Regeln in Liste speichern Java Basics - Anfänger-Themen 8
B String nach HTML formatieren Java Basics - Anfänger-Themen 9
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
UnknownInnocent Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
B Umbruch nach bestimmten Wort Java Basics - Anfänger-Themen 5
E Arrays nach best Muster füllen Java Basics - Anfänger-Themen 4
N Arbeitsspeicher nach kompilieren immer voller Java Basics - Anfänger-Themen 6
K String nach bestimmtem Muster parsen Java Basics - Anfänger-Themen 3
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
J GUI wird direkt nach dem erstellen weiß übermalt Java Basics - Anfänger-Themen 3
L Programm zur Codieren nach Rotx Java Basics - Anfänger-Themen 1
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
A ArrayList - size() nur nach bestimmtem index anzeigen lassen Java Basics - Anfänger-Themen 13
M Array nach String durchsuchen und zurückgeben Java Basics - Anfänger-Themen 16
W Wie lasse ich meine Ausgabe nach dem Lesen verschwinden ? Java Basics - Anfänger-Themen 1
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
S String trennen nach beliebigen Zeichen Java Basics - Anfänger-Themen 3
D Ich suche nach einer Möglickeit den Webseiten Inhalt per Java zu analysieren Automatisch Java Basics - Anfänger-Themen 3
B String: suche nach Wörter und in List<String> speichern Java Basics - Anfänger-Themen 3
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
K Schlüsselworte Nach Java update findet mdb Datei nicht Java Basics - Anfänger-Themen 6
G nach 9 - stelliger Nummer suchen Java Basics - Anfänger-Themen 7
S Wie verwende ich ne aus einer Schleife nach der Schleife? Java Basics - Anfänger-Themen 9
M BufferedReader neue Zeile nach Knopfdruck Java Basics - Anfänger-Themen 9
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
D Liste nach 2 gleichen Einträgen suchen Java Basics - Anfänger-Themen 4
J Input/Output Den zweiten Output erst nach Eingabe ausgeben Java Basics - Anfänger-Themen 4
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
S Dialogfeld nach 5 Sek automatisch öffnen Java Basics - Anfänger-Themen 15
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
S OOP Button erst nach 2x klicken deaktivieren Java Basics - Anfänger-Themen 4
C Compiler-Fehler Wird eine if Bedingung nach einer for-Schleife nach jeder Iteration überprüft? Java Basics - Anfänger-Themen 1
F Koordinaten nach 360° auf 0° setzen Java Basics - Anfänger-Themen 2
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
S Sound stoppen und nach Pause wieder abspielen Java Basics - Anfänger-Themen 6
G String nach Contains/Regex Java Basics - Anfänger-Themen 2
J fehler nach windows update Java Basics - Anfänger-Themen 44
F Wort nach String ausgeben Java Basics - Anfänger-Themen 5
J doppelname nach schlüsselwort extends Java Basics - Anfänger-Themen 4
M Array nach Zehnen durchsuchen. Java Basics - Anfänger-Themen 25
F Interface Nach mehreren Kriterien sortieren Java Basics - Anfänger-Themen 2
S abbruch nach Ausführung eines ActionListeners...warum? Java Basics - Anfänger-Themen 6
I Sortieren nach Priorität Java Basics - Anfänger-Themen 3
L Javaprogramm nach ausführung des gesammten Cods neu beginnen lassen Java Basics - Anfänger-Themen 9
B Element in Array nach unten verschieben Java Basics - Anfänger-Themen 11
Viktormk Methoden Gleitpunktzahlen nach IEEE 754 addieren ! Java Basics - Anfänger-Themen 1
M String nach float Konvertieren Java Basics - Anfänger-Themen 23
K Sortierung eines int-Arrays von groß nach klein Java Basics - Anfänger-Themen 3
S Input/Output Programm läuft nach input-Abfrage nicht weiter. Java Basics - Anfänger-Themen 2
Clarence Weinberg Eclipse: Package wird erst nach Neustart aktuallisiert Java Basics - Anfänger-Themen 1
X Nach switch case weiter mit Auswahl Java Basics - Anfänger-Themen 7
R Card Layout refresh nach Änderung Java Basics - Anfänger-Themen 1
F Dialog wird nach Schließung neu geöffnet Java Basics - Anfänger-Themen 4
D Komischer Fehler nach <Integer> List Java Basics - Anfänger-Themen 2
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
B Methoden Element aus einem Array löschen, Rest nach vorne verschieben? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben