Variablen Variable hat anscheinend keinen Wert

Thulor

Neues Mitglied
Hallo liebes Javaforum!
Ich habe vor ein paar Tagen angefangen, Java zu lernen, Learning-By-Doing wohlgemerkt. Die Grundsyntax kann ich eigentlich auch.
Ich hatte vor, als Einsteigerprojekt einen "Würfelnotationparser" zu basteln. Ich habe also einen String ("2W6+3"), der an 2 Stellen getrennt wird: "W" und "+". Diese 3 Teile sind dann in einem Array und per while-Schleife wird ein Wert erhöht (siehe Quellcode):
Java:
public class Dicer
{
  
  public static void main( String[] args )
  {
    java.util.Random r = new java.util.Random();
    String string = "2W6+3";
    String pattern[] = string.split( "[W]|[\\+]" );
    int i = 1;
    int wert = 0;
    while( i <= Integer.parseInt( pattern[0] ) )
    {
      wert += r.nextInt( Integer.parseInt( pattern[1] ) - 1 ) + 1;
    }
    System.out.println( wert );
  }
}
Das Problem: Der Compiler gibt mir gar nichts aus.
Und ich weiß, dass der Programmstil nicht gerade der beste ist, bin offen für jede Verbesserung!

Thulor
 
Du hast vergessen, in der while-Schleife i zu erhöhen. Einfach nach Zeile 14 noch
Code:
i++
dazuschreiben und schon läuft's.

Edit:
BTW: Dass der Compiler gar nichts ausgibt, ist ja schon richtig, sonst hättest du wohl irgendwo Syntaxfehler o.ä. 🙂 Der Interpreter ist es, der nichts von sich gibt - und das lag wiederum daran, dass durch das fehlende
Code:
i++
eine Endlosschleife produziert wurde.
 
Zuletzt bearbeitet:
Hi,

wie ich das sehe, landest du in einer Endlosschleife, da
Code:
i
nicht erhöht wird und
Code:
pattern[0]
sich nicht ändert.
Außerdem verlierst du die Information, ob da nun ein 'W' oder ein '+' stand. Ich würde erst nach '+' splitten und die Ergebnisse im Anschluss nach 'W'.
 
Hallo xahpuk,

Das mit dem "W" und dem "+" ist eigentlich egal, da die Notation gleich bleiben soll. Du hast natürlich recht, wenn man überprüfen will, ob die Notation fehlerhaft ist oder nicht, aber das ist ersteinmal egal, da vor dem "W" keine Rechenoperationen stattfinden sollen. Und vielen Dank für deine Antwort, ich bin von PHP gekommen und habe da immer mit for-Schleifen gearbeitet, die anders funktionieren als die Java Schleifen.

Hallo Haave,

Vielen Dank für deine Antwort, ich bin von PHP gekommen und habe da immer mit for-Schleifen gearbeitet, die anders funktionieren als die Java Schleifen.

Thulor
 
for-Schleifen gibt es in java auch:

Java:
for (int i = 1; i <= Integer.parseInt(pattern[0]); i++) {
  wert += r.nextInt( Integer.parseInt( pattern[1] ) - 1 ) + 1;
}
 

Neue Themen


Zurück
Oben