Java leJOS忽略了我的循环

Java leJOS忽略了我的循环,java,eclipse,nxt,lego,mindstorms,Java,Eclipse,Nxt,Lego,Mindstorms,我刚刚为我的NXT 1.0安装了leJOS,它工作得很好。我正在使用Eclipse编写代码并将其上载到块中。我唯一的问题是块完全忽略了我的代码: import lejos.nxt.*; public class Drive { public static void main(String[] args) throws Exception { TouchSensor touch = new TouchSensor(SensorPort.S1); SoundSensor soun

我刚刚为我的NXT 1.0安装了leJOS,它工作得很好。我正在使用Eclipse编写代码并将其上载到块中。我唯一的问题是块完全忽略了我的代码:

import lejos.nxt.*;

public class Drive {
public static void main(String[] args) throws Exception {

    TouchSensor touch = new TouchSensor(SensorPort.S1);
    SoundSensor sound = new SoundSensor(SensorPort.S3);

    Motor.A.setSpeed(1000);
    Motor.B.setSpeed(1000);
    Motor.A.forward();
    Motor.B.forward();

    /*try{
    Thread.sleep(10000);
    } catch (Exception e) {}
    */

    if (touch.isPressed()) {
        Motor.A.flt();
        Motor.B.flt();
        LCD.drawString("Done", 3, 4);
        NXT.shutDown();

    } else {
        Motor.A.forward();
        Motor.B.forward();
    }

    Button.waitForPress();
我按下
按钮。waitForPress()在那里,这样我就可以检查程序的实际功能。
如果我在这个配置中运行它,它会向前移动并继续运行,直到我按下一个按钮。如果我取消对
Thread.sleep()
命令的注释,则机器人会在我指定的等待时间内移动,然后停止,在这两种情况下,完全忽略我希望它监视触摸传感器被按下的时间。所有的示例程序都可以工作,但我没有在其中找到循环,所以我认为我的循环有问题。 有人能帮忙吗??
已经谢谢了

我想作为评论回答,但我不认为我能做到这一点并使其可读

我的猜测是,
touch.isPressed()
在没有实际按下传感器的情况下返回true。传感器不太可靠,可能不是完全处于初始化状态

我现在将代码更改为这样,只是为了调试问题:

Motor.A.setSpeed(1000);
Motor.B.setSpeed(1000);
Motor.A.forward();
Motor.B.forward();

if(touch.isPressed()) 
{
   LCD.drawString("Pressed", 3, 4);
}
else
{
   LCD.drawString("NOT Pressed", 3, 4);
}

Button.waitForAnyPress();

// rest of your code

这样,您就可以100%确定所显示的内容将返回。

您应该使用while循环,然后将if-else语句放入其中,如- while(true) { 在这里写代码。 }


但在上述情况下,您的程序将永远运行,不会停止。因此,最好在while循环中给出一个条件。如果有任何疑问,我可以再次告诉你

首先感谢你的帮助。现在我知道触摸传感器似乎根本不工作,程序也不会立即退出,原因是:我不知道,但如果我注释掉按钮,它会再次关闭,而什么也不做。我今晚教我的lejos课。。。如果有机会,我会玩代码的。