Hi,
ich hab hier en Thread von nem Programm, in dem ich mir nich ergründliche Errors finde. Vielleicht is das ganze ja was ganz banales, aber ich seh spontan nicht woran die Fehler liegen.
Hier erstma der Code. Das ganze is en Liniefolgeprogramm für einen Roboter. Die genauen Errors hab ich unter nochmal aufgelistet.
[/quote]
Zeile 121: Syntax error, insert "}" to complete Block
Zeile 163: Syntax error, insert ";" to complete Statement
Zeile 167: Syntax error, insert ";" to complete Statement
Zeile 170: Syntax error, insert ";" to complete Statement
Zeile 173: Syntax error, insert ";" to complete Statement
Ich steh da vor einem Rätsel. Ich weiss nich wo und warum ich dort eine Klammer bzw. ein Simikolon einfügen soll. Kann mir jemand von Euch sagen, was da falsch is, ich verstehs wirklich nicht.
Gruß toti
ich hab hier en Thread von nem Programm, in dem ich mir nich ergründliche Errors finde. Vielleicht is das ganze ja was ganz banales, aber ich seh spontan nicht woran die Fehler liegen.
Hier erstma der Code. Das ganze is en Liniefolgeprogramm für einen Roboter. Die genauen Errors hab ich unter nochmal aufgelistet.
Code:
package robot;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.media.*;
import javax.media.control.*;
import javax.media.format.*;
import javax.media.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.media.Buffer;
import javax.swing.*;
import icommand.nxt.Sound;
import icommand.nxt.comm.NXTCommand;
import icommand.nxt.*;
import javax.media.protocol.*;
/**
*
* @author toti
*/
public class follow_line extends Thread
{
private String[] g;
public int green;
public int white;
public int black;
public int trash;
public int maxSpeed = 200;
public void run()
{
try {
followline(g);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void followline(String[] args) throws Exception {
System.out.println("whats up?");
Thread.sleep(20);
BufferedImage img = ImageIO.read(new File("./testimg.jpg"));
Color p[] = new Color[8];
int colors[] = new int[8];
for (int i = 0; i < 8; i++) {
p[i] = new Color(img.getRGB((10 + 20 * i), 80));
System.out.println(i + ":R: " + p[i].getRed());
System.out.println(i + ":G: " + p[i].getGreen());
System.out.println(i + ":B: " + p[i].getBlue());
// determine color
if (p[i].getBlue() + p[i].getGreen() + p[i].getRed() > 630)
colors[i] = white;
else if (p[i].getBlue() + p[i].getGreen() + p[i].getRed() < 100)
colors[i] = black;
else if ((p[i].getGreen() > 100) && (p[i].getRed() + p[i].getBlue() < 100))
colors[i] = green;
else
colors[i] = trash;
// print out colors
if (colors[i] == black)
System.out.println("#" + i + ": black");
else if (colors[i] == white)
System.out.println("#" + i + ": white");
else if (colors[i] == green)
System.out.println("#" + i + ": green");
else if (colors[i] == trash)
System.out.println("#" + i + ": trash");
}
// calc where black line middle is
float lineLoc = 0;
int beep2 = 0;
for (int i = 0; i < 8; i++)
if (colors[i] == black) {
lineLoc += i;
beep2 += 1;
}
// avg
lineLoc = lineLoc / beep2;
System.out.println(lineLoc);
// set direction
float a = 0;
if (lineLoc == 3.5)
forward();
if (lineLoc < 3.5) { // left
if (lineLoc > 3) {
a = 7 / 2 - lineLoc; // 0 < a < .5 (0: maxSpeed, .5: speed = // 0)
a = a * maxSpeed * 2; // 0 < a < maxSpeed
turn(true, true, maxSpeed - (int) a, maxSpeed);
} else if (lineLoc == 3)
turn(true, true, 0, maxSpeed);
else if (lineLoc < 3) {
a = 3 - lineLoc; // 0 < a <= 3 (0: speed = 0, 3: maxspeed)
a = a * maxSpeed / 3; // 0 < a < maxSpeed
turn(false, true, (int) a, maxSpeed);
}
}
else if (lineLoc > 3.5) { // right
if (lineLoc < 4) {
a = 4 - lineLoc; // 0 < a < .5 (.5: maxSpeed, 0: speed = 0)
a = a * maxSpeed * 2; // 0 < a < maxSpeed
turn(true, true, maxSpeed, (int) a);
}
else if (lineLoc == 4)
turn(true, true, maxSpeed, 0);
else if (lineLoc > 4) {
a = 7 - lineLoc; // 0 < a <= 3 (3: speed = 0, 0: maxspeed)
a = a * maxSpeed / 3; // 0 < a < maxSpeed
turn(true, false, maxSpeed, maxSpeed - (int) a );
}
}
}
private static void go(boolean leftOn2, boolean rightOn2, boolean leftFwd2, boolean rightFwd2, int leftSpeed2, int rightSpeed2) {
// did left motor change?
boolean leftOn;
boolean leftFwd;
int leftSpeed;
boolean rightOn;
boolean rightFwd;
int rightSpeed;
if( (leftOn2 != leftOn) || (leftFwd2 != leftFwd) || (leftSpeed2 != leftSpeed) ) {
if(leftOn2) {
if(leftFwd2)
Motor.A.forward();
else
Motor.A.backward();
Motor.A.setSpeed(leftSpeed2);
}
else Motor.A.stop();
}
leftOn2 = leftOn;
leftFwd2 = leftFwd;
leftSpeed2 = leftSpeed;
// did right motor change?
if( (rightOn2 != rightOn) || (rightFwd2 != rightFwd) || (rightSpeed2 != rightSpeed) ) {
if(rightOn2) {
if(rightFwd2)
Motor.C.forward();
else
Motor.C.backward();
Motor.C.setSpeed(rightSpeed2);
}
else Motor.C.stop();
rightOn2 = rightOn;
rightFwd2 = rightFwd;
rightSpeed2 = rightSpeed;
}
}
private static void halt() {
go(false, false, true, true, 0,0);
}
private static void forward() {
go(true, true, false, false, 200, 200);
}
private static void turn(boolean leftFwd2, boolean rightFwd2, int speedLeft2, int speedRight2) {
go(true, true, leftFwd2, rightFwd2, speedLeft2, speedRight2);
}
}
[/quote]
Zeile 121: Syntax error, insert "}" to complete Block
Zeile 163: Syntax error, insert ";" to complete Statement
Zeile 167: Syntax error, insert ";" to complete Statement
Zeile 170: Syntax error, insert ";" to complete Statement
Zeile 173: Syntax error, insert ";" to complete Statement
Ich steh da vor einem Rätsel. Ich weiss nich wo und warum ich dort eine Klammer bzw. ein Simikolon einfügen soll. Kann mir jemand von Euch sagen, was da falsch is, ich verstehs wirklich nicht.
Gruß toti