Erste Schritte while boolean=false läuft nur bei true???

  • Themenstarter Themenstarter marlo
  • Beginndatum Beginndatum
M

marlo

Gast
moin
neuer tag, neues problem
ich bau mir jetzt mal ne kleine glücksradversion
soll nich schön werden, will nur n bisschen üben

folgendes problem
Java:
bolRichtig=false;
 while (bolRichtig=false)
 {
    System.out.println("Bitte den Buchstaben eingeben");
    strBuchstabe = scanner.next();
    if (strWort.contains(strBuchstabe))
    {
     System.out.println(strBuchstabe+" ist enthalten");
        x=0;
        while(x<aryLetter.size())
        {
            if(aryLetter.get(x).equals(strBuchstabe))
            {
            aryTemp.set(x,strBuchstabe);   
        }
         x++;
        }
    }
    if (aryTemp.contains(strPlatz))
    {
        bolRichtig=false;
        //System.out.println("Herzlichen Glückwunsch");     
    }
    System.out.println(""+ aryTemp);
    }

die schleife wird nur durchlaufen, wenn ich while bolRichtig auf true frage, obwohl der boolean auf false gesetzt ist....
jemand ne idee?
mfg martin
 
kann man eigentlich die ausgabe einer arrayliste formattieren?
aryTemp ist hier arraylist und die ausgabe ist ja immer mit kommata getrennt..oder muss ich da ne neue schleife nehmen, die werte auslesen und als string zusammen setzen?
und wegen !bolxxx ich werds versuchen...alles noch so neu hier 😉
 
kann man eigentlich die ausgabe einer arrayliste formattieren?
aryTemp ist hier arraylist und die ausgabe ist ja immer mit kommata getrennt..oder muss ich da ne neue schleife nehmen, die werte auslesen und als string zusammen setzen?
und wegen !bolxxx ich werds versuchen...alles noch so neu hier 😉
Ja, musst du per Hand zusammensetzten. Kannst dafür aber zB Strings.join nutzen
 
Wenn du die Strings ohnehin nur aneinanderhängen willst, ist join aber bequemer:
Java:
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("join");
        list.add("is");
        list.add("cool");
        System.out.println(list);
        System.out.println(String.join(" ", list));
    }
Ausgabe:
Code:
[join, is, cool]
join is cool
 
Wie funktioniert Glücksrad?
echt jetzt?
da gabs mal ne fernsehsendung..
buchstaben eines wortes werden maskiert, und dann müssen sie geraten werden. so öhnlich wie hangman nur ohne galgen. der ist mir zuviel zeichnerei.
in meinem prog soll ein zufälliges wort aus einer wortliste (textdatei) gewählt werden.
bis jetzt läufts allerdings erst mit einem vorgegebenem wort. ans einlesen der datei und random auswahl
mach ich mich jetzt..so eine wortliste muss ja auch erstmal erstellt werden ^^
 
Das ist mir immer noch nicht ganz klar,
Buchstaben eines Wortes werden verdeckt und dann muss man sie erraten und kann ggf. das Wort auflösen?
Buchstaben Anzahl/Position bekannt?
Wort wird zufällig gewählt?
Was passiert, rät man einen Buchstaben richtig/falsch?
Wie ist eine Spielrunde?
Wie viele Spieler gibt's?
Gibt's Punkte/Geld/Gewinn?
Was hat ein (Glücks)-rad damit zu tun?
Ein Glossar, um bisschen die Begrifflichkeiten zu klären, wäre auch nicht schlecht - sogar zwingend notwendig.
Also leider ist das keine vollständige Anforderungsdefinition, anhand derer sich ein Infos hinsetzen könnte und den nächsten Schritt im iterativen Entwicklungsprozesses planen könnte.
Agile Ansätze gibt es zwar auch, aber das ist mehr so Microsoft ding - also da fällt die AA einfach mal komplett weg.
----
Wäre gern bereit zu Helfen, aber raten mach~ ich nicht so gern. 😉
----
Wie wär's mit einer natürlichsprachlichen Umschreibung, bestehend aus 2000-3000 Worten? Damit kann ich etwas anfangen. 😉
 
Wäre gern bereit zu Helfen, aber raten mach~ ich nicht so gern. 😉
----
Wie wär's mit einer natürlichsprachlichen Umschreibung, bestehend aus 2000-3000 Worten? Damit kann ich etwas anfangen. 😉
Er hatte doch nur ein paar konkrete Fragen, für deren Beantwortung man gar nichts über das Glücksrad wissen muss. Bei Interesse kann man ja hier etwas über die Show nachlesen und hier über das Glücksrad.😉
 
oh je, da hab ich ja wieder was angestellt..
aaalso, bis jetzt läuft:
datei einlesen, zufällige wortauswahl, maskieren der buchstaben, bei eingabe eines richtigen buchstaben werden alle vorkommenden dieses buchstaben demaskiert,
beispiel. - - - - , eingabe z, nicht drin, eingabe b ausgabe: B - - -, usw. bei suchwort AAL würde bei eingabe a dann eben AA- ausgegeben
bei kompletter demaskierung (lösungsworteingabe hab ich noch nicht drin) gibts n herzlichen glückwunsch..
mir ging es um das arbeiten mit strings und einlesen aus einer datei und weils passte random.
jetzt seh ich mir endlich mal eigene klassen/objekte an
bis jetzt is die idee: klasse Spieler, name, punkte, booleanBonus(für ne solorunde auf zeit).
Spieler1:name=pname1, punkte=punkte1..
spieler2:name=pname2, punkte=punkte2..
 
Java:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package gluecksrad;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
---kann ich den unteren teil nicht eigentlich rausnehmen? java.util.* müsste die doch auch importieren??
import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Random;

public class glueck {
static int a;
static int i;
static int c;
static int x;
static int n;
static int k;
static int j;
static boolean bolRichtig;
static String strWort;
static String outWort;
static String strBuchstabe;
static String strTempWort;
static String strPlatz;
static long rndZahl1;
static long rndZahl2;
/**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException, IOException {
 ArrayList<String> wort=new ArrayList<String>();
 ArrayList<String> aryLetter=new ArrayList<String>();
 ArrayList<String> aryTemp=new ArrayList<String>();
 //**************************************************************************
 //             Einlesen der Wortliste
String filePath = "C:\\wordlist.txt";
File file = new File(filePath);
if(file.isFile())
{     
FileInputStream inputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);         
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
//einlesen der datei
stringBuilder.append(bufferedReader.readLine());
while(bufferedReader.ready())
{
stringBuilder.append("\r\n");
stringBuilder.append(bufferedReader.readLine());             
wort.add(bufferedReader.readLine());
  }
  }         
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 //         zufälliges wort wird aus der liste gewählt
 Random rndZahl = new Random();             
   x = 1 + rndZahl.nextInt(wort.size());
   //System.out.println(wort.get(x).toUpperCase());     
 //+++++++++++++++++++++++++++++++++++++++++++++++++
 strWort=(wort.get(x).toUpperCase());
 for (int i=0; i<strWort.length(); ++i) {
 aryLetter.add(""+strWort.charAt(i));
     }
  outWort="";
 strPlatz=" _ ";
 //***********************************************************
 for (int i=0; i<=strWort.length(); ++i) {      //Buchstaben des suchwortes werden  maskiert
 if (i>0)                                     
         {
           outWort+=strPlatz;
           aryTemp.add(strPlatz);
         
        }
     }
 //****************************************************************************
 Scanner scanner = new Scanner(System.in);
bolRichtig=false;
 while (bolRichtig==false)
 {
     System.out.println(outWort);
    System.out.println("Bitte den Buchstaben eingeben");
    strBuchstabe = scanner.next();
    strBuchstabe=strBuchstabe.toUpperCase();
    
    if (strBuchstabe.equals(strWort.toUpperCase()))
    {
       System.out.println("Super");
        bolRichtig=true;
        System.exit(0);
    }
    if (!strWort.contains(strBuchstabe.toUpperCase()))
    {
     System.out.println(strBuchstabe+" ist nicht enthalten");
    }
        x=0;
        while(x<aryLetter.size())
        {
            if(aryLetter.get(x).equalsIgnoreCase (strBuchstabe))
            {
            aryTemp.set(x,strBuchstabe.toUpperCase()); 
        }
         x++;
        }
        outWort="";
    for (int i=0; i<strWort.length(); ++i) {
         outWort+=" " +aryTemp.get(i)+" ";
     }
 
    if (!aryTemp.contains(strPlatz))
    {
        bolRichtig=true;
        System.out.println("Herzlichen Glückwunsch"); 
        System.out.println(""+ outWort);
        System.exit(0);
    }
    }
    }
}

so siehts bis jetzt aus
 
Zuletzt bearbeitet von einem Moderator:
Es gibt noch einen Fehler beim Einlesen der Datei. Dort rufst du zweimal bufferedReader.readLine()auf, so dass nur jedes zweite Wort in der Wortliste landet. Außerdem ist die Berechnung der Zufallszahl noch nicht korrekt, denn aktuell kann es zu einer IndexOutOfBoundsException kommen. Die Indizes beginnen ja bei 0 und nicht bei 1.
 
stringBuilder.append(bufferedReader.readLine());
wort.add(bufferedReader.readLine());
du meinst den part? stimmt , eine reihe is überflüssig..die zeile/das wort wird ja einmal in nen string und einmal direkt in das wort.array geschrieben. der part mit dem string wird überhaupt nicht mehr genutzt..leiche von den anfängen ^^
laut tutorial ist das +1 dafür, dass es n random von 1-wort.size() in diesem fall sucht. muss ich ändern , array fängt ja mit 0 an.

danke für den hinweis..eigentlich müsst ich auch wort.size()-1 nehmen..
da sind bestimmt noch mehr "leichen" drin. hab am anfang versucht mit date.gettime() und ner zahl ne random zu bekommen ^^ damals bei vb waren die random immer reproduzierbar. erstes ausführen immer zb 1. da hab ich mit der datetime+variable(rnd) oder so ähnlich zufallszahlen generiert..lang lang ists her..irgendwie so ^^
die kommentare und //**************** oder //++++++ dienen mir zum einteilen was wo passieren soll..zukünftig werd ich das mal versuchen direkt in methoden zu stecken
aber jetzt häng ich an nem anderen problem. das dateieinlesen ist in eine neue java.datei/klasse verschoben und wird aufgerufen..meldung is nur buildung succesfull..und nix passiert.oo
 
moin, ich bin jetzt dabei das glücksrad n bisschen aufzuräumen.
neue classdatei(javadatei) erstellt. methoden dateieinlesen, zufallszahl, wortmaskieren usw.
problem jetzt - wie kann ich aus den anderen methoden auf die arrays zugreifen die in dateieinlesen angelegt werden..
variablen sind kein problem..mit dateieinlesen.variable..das hab ich rausgefunden ^^
aber ich muss an das array das in dateieilesen angelegt wird aus zufallszahl zb zugreifen.
system.arraycopy, bzw clone wirft auch nur fehler raus...
Java:
public DateiEinlesen() throws FileNotFoundException, IOException
{
ArrayList<String> wort=new ArrayList<String>();
 ArrayList<String> aryLetter=new ArrayList<String>();
 ArrayList<String> aryTemp=new ArrayList<String>();
.
.
}
public static void Zufall(){
 Random rndZahl = new Random();              
   x = 1 + rndZahl.nextInt(wort.size());  //array wort wird nicht gefunden...auch DateiEinlesen.wort geht nicht
mfg martin
 

Neue Themen


Zurück
Oben