Processing: "unexpected token: void"

...komplette Frage anzeigen

1 Antwort

Du hast die schließende geschweifte Klammer der letzten if-Anweisung in drawCircle() vergessen. Die schließende geschweifte Klammer der Methode wird also als zur if-Verzweigung gehörend interpretiert. Daraufhin fehlt dem Compiler aber die schließende geschweifte Klammer der Methode - er glaubt, dass er sich noch immer in der Methode befindet, wenn dein "void test()" auftaucht. Und das erwartet er an dieser Stelle eben nicht ("unexpected token").

Danke für die Antwort! Leider hat das Programm noch einen Fehler, den ich auch nicht verstehe… vlt kannst du mir helfen?


// Das Drücken der linken Maustaste soll im 800x600 Pixel grossen Displayfenster einen Kreis an
// der Position des Mauszeigers mit zufälligem Durchmesser zwischen 5 und 145 Pixel sowie
// zufälliger Farbe zeichnen.

// globale Deklaration
ArrayList<PVector> pos; // Position (Vektor) von KreisMittelpunkt
ArrayList<Float> diam; // Durchmesser von Kreis
int counter; // Anzahl Kreise
boolean draw; // liegt Kreis auf einem anderen?

void setup(){
  size(800, 600);
  initialisieren();
  smooth();
  noStroke();
  ellipseMode(CENTER);
}

void initialisieren(){
  pos = new ArrayList<PVector>();
  diam = new ArrayList<Float>();
  counter = 0;
  draw = false;
}

void draw(){
  if(mousePressed){
    // Speicherung Koordinaten und Durchmesser
    PVector pos = new PVector(mouseX, mouseY);
    diam.add(random(5, 145));
    // zeichne Kreis
    drawCircle();
  }
}

void drawCircle(){
  // Farben (RBG)
  float red = random(255);
  float green = random(255);
  float blue = random(255);

  // Anzahl Kreise kontrollieren
  if(counter > 1){
    test();
  } else{
    draw = true;
  }

  // zeichnen
  if(draw == true){
    fill(red,green,blue);
    ellipse(mouseX, mouseY, diam.get(counter), diam.get(counter));
    counter++;
  }
}

void test(){
  // Prüfung, ob der Kreis auf dem anderen liegt
  for(int i = 0; i < counter; i++){
    float distance = dist((pos.get(i)).x, (pos.get(counter)).x, 
    (pos.get(i)).y, (pos.get(counter)).y); // Distanz von V1 und V2
    float rest = distance - diam.get(i) - diam.get(counter);
    if (rest>=0){
      draw = true;
    } else{
      draw = false;
    }
  }
}

0
@dergutekoenig

Bei der Methode "test()". Die Zeile mit "float distance…"

Die Fehlermeldung ist: "OutOfBoundsException: Index:0, Size: 0"

Ich habe von jemandem schon einen Tip bekommen, ich weiss aber nicht was damit gemeint ist: "Die Fehlermeldung sagt, dass in der Berechnung der Variablen distance im Minimum ein Wert ausserhalb der erlaubten Grenze liegt."

0

Was möchtest Du wissen?