0

私はJavaが初めてで、カレルが右折するためのメソッドを備えた新しいロボットクラスを作成しようとしています。ただし、クラス「RightTurnerRobot」を拡張して「Robot」を含めようとすると、次のエラーが発生します。

暗黙のスーパー コンストラクター Robot() は、既定のコンストラクターに対して未定義です。明示的なコンストラクターを定義する必要があります

私のコードは以下の通りです。

import kareltherobot.*; 
import kareltherobot.Robot;

import java.awt.*; 

public class RightTurnerRobot extends Robot implements RobotTask
{

 public void TurnRight()
 {
  turnLeft();
  turnLeft();
  turnLeft();
 }

 static
 {
   World.setDelay(100); 

   World.setSize(10, 10);
 }

  public void task()
  { 
    //World.readWorld("src", "someworldname.kwld");

    UrRobot grace = new UrRobot(3, 3, East, 30);
    grace.move();
    grace.turnOff();
  } 

編集:私は問題を理解しました。UrRobotの代わりに拡張することになっていましたRobot。次に、次のコンストラクターを作成しました。

import kareltherobot.*; //Needed for Robots

import java.awt.*; //Needed for Color
public class RightTurnerRobot extends UrRobot
{
  public RightTurnerRobot(int street, int avenue, Direction direction,
    int beepers)
  {
    super(street, avenue, direction, beepers);
    // TODO Auto-generated constructor stub
  }

  public void turnRight()
  {
    turnLeft();
    turnLeft();
    turnLeft();
  }
}
4

1 に答える 1

0

Robot クラスを拡張しているため、Robot クラスに一致するコンストラクターが必要です。

import kareltherobot.*; 
import kareltherobot.Robot;

import java.awt.*; 

public class RightTurnerRobot extends Robot implements RobotTask
{

public RightTurnerRobot(int arg0, int arg1, Direction arg2, int arg3) {
    super(arg0, arg1, arg2, arg3);
}

public void TurnRight()
{
 turnLeft();
 turnLeft();
 turnLeft();
}

static
{
 World.setDelay(100); 

 World.setSize(10, 10);
}

public void task()
 { 
//World.readWorld("src", "someworldname.kwld");

UrRobot grace = new UrRobot(3, 3, East, 30);
grace.move();
grace.turnOff();
} 

私の意見では、これを行うためのより良い方法はこのようなものです。

import kareltherobot.*;
import kareltherobot.Robot;

import java.awt.*;

public class RobotWorld{

    //Create Robot
    Robot robot;

    public RobotWorld () {
        //Initialize World
        World.readWorld("PATH/TO/WORLD");
        World.setVisible(true);

        //Initialize Robot
        robot = new Robot(3, 3, Robot.East, 3);
        turnRight(robot);
    }

    public void turnRight (Robot tempRobot) {
        tempRobot.turnLeft();
        tempRobot.turnLeft();
        tempRobot.turnLeft();
    }

    public static void main (String [] args) {
        RobotWorld world = new RobotWorld();
    }
}
于 2016-08-17T18:38:31.163 に答える