Hallo Kollegen Programmierer! Ich bin Java-Anfänger und brauche Hilfe.Java analysiert einen String mit einem Scanner und verwendet den geparsten String als Eingabe in einer if else-Anweisung
Ich habe ein Programm, das ich die Turtle verschieben möchte mit vorgefertigten Anweisungen in einer Zeichenfolge namens "Regel". Ich möchte, dass diese Regel in ein lesbares Format für eine if-else-Anweisung umgewandelt wird. Die if-else-Anweisung liest dann jedes Zeichen in der analysierten "Regel" und veranlasst die Turtle, entsprechend zu jeder Bedingung zu gehen.
Ich habe einige Probleme mit dem Programm, es parsiert (denke ich) und zeigt die Regel, aber es gibt keine Bewegung von der Schildkröte. Ich glaube, es hat etwas mit der if-else-Anweisung zu tun. Bitte helfen Sie!
import java.awt.*;
import java.util.Scanner;
class FractalEngine
{
World worldObj = new World();
Turtle m = new Turtle(200, 200, worldObj);
Scanner in = new Scanner(System.in);
FractalEngine()
{
//String rule = "F-F+F+F-FQ";
String rule = "F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-FQ";
//String rule = "F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F-F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F+F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F+F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F-F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-FQ";
m.setHeading(0);
Scanner scanner = new Scanner(rule);
System.out.println();
System.out.println("Fractal Rule: ");
System.out.println(scanner.nextLine());
System.out.println();
// it prints it to the terminal, but no Turtle movement. Am I using the right parsing method?
do
{
Scanner scanRule = new Scanner(rule);
scanRule.nextLine();
if(rule.equalsIgnoreCase("F"))
m.forward(25);
else if(rule.equals("-"))
m.turnLeft();
else if(rule.equals("+"))
m.turnRight();
else
rule = "Q";
}
while(!rule.equalsIgnoreCase("Q"));
System.out.println("Fractal construction terminated.");
}
}
public class FractalConstructor
{
public static void main(String[] args)
{
FractalEngine fe = new FractalEngine();
}
}
Bitte enthalten Sie Ihre Ausgabe. Tipp: Weisen Sie das Ergebnis von 'nextLine()' einer Variablen zu. Und Sie wollen wahrscheinlich keinen "Scanner" verwenden, sondern "Regel" in ein Zeichen-Array konvertieren. – 4castle
Sie müssen nicht wirklich einen 'Scanner' verwenden, um das zu tun, was Sie wollen, es sei denn, Sie möchten später von einer anderen Quelle als einem vorgefertigten String lesen. Sie können einfach 'char [] commands = rule.toCharArray()' ausführen und dann das Array durchlaufen. –