Lejos EV3 «Null Pointer Exception», но я не уверен, как это исправить - PullRequest
0 голосов
/ 13 февраля 2019

Я работаю над настройкой Java с lejos для своего клуба робототехники, и я создавал некоторые базовые методы привода, но когда я организовал его в методы, он сказал мне, что у меня исключение нулевого указателя.Проблема в том, что я не знаю, где это и как это исправить.


import lejos.hardware.motor.*;
import lejos.hardware.port.*;

public class HardwareMappings {

    EV3LargeRegulatedMotor leftDrive = null;
    EV3LargeRegulatedMotor rightDrive = null;


    public void init(HardwareMappings ahwMap) {
        leftDrive = new EV3LargeRegulatedMotor(MotorPort.B);
        rightDrive = new EV3LargeRegulatedMotor(MotorPort.C);

    }

}

public class DrivetrainMethods {

    HardwareMappings robot = new HardwareMappings();

    public void TimedDrive(int direction, int power, double time) throws InterruptedException {
        robot.leftDrive.setSpeed((power * 60) - direction);
        robot.rightDrive.setSpeed((power * 60) + direction);
        Thread.sleep((long) (time * 60));
        robot.leftDrive.stop(true);
        robot.rightDrive.stop(true);
    }

    public void TankDrive (int leftPower, int rightPower, double time) throws InterruptedException {
        robot.leftDrive.setSpeed(leftPower);
        robot.rightDrive.setSpeed(rightPower);
        Thread.sleep((long) (time * 60));
        robot.leftDrive.stop(true);
        robot.rightDrive.stop(true);
    }
}

public class Test {

    public static void main (String[] args) throws InterruptedException{

        DrivetrainMethods drivetrain = new DrivetrainMethods();

        drivetrain.TimedDrive(0, 50, 1);
        drivetrain.TankDrive(-50, -50, 1);
    }
}

Пожалуйста, помогите!
Спасибо

пс (Предполагается, что каждый фрагмент кода должен бытьотдельный файл.)

1 Ответ

0 голосов
/ 13 февраля 2019

Пожалуйста, измените:

public void init(HardwareMappings ahwMap) {//this code will be invoked on:
    // someHardwareMappings.init(otherHardwareMappings);
    leftDrive = new EV3LargeRegulatedMotor(MotorPort.B);
    rightDrive = new EV3LargeRegulatedMotor(MotorPort.C);
}

на:

public HardwareMappings() { // this code will be invoked on:
    // new HardwareMappings();)
    leftDrive = new EV3LargeRegulatedMotor(MotorPort.B);
    rightDrive = new EV3LargeRegulatedMotor(MotorPort.C);
}

Это исправит ваш NPE, и вот как (не python !;)конструктор выглядит так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...