2016-08-17 1 views
0

私はjavaを初めて使用し、Karelが右折する方法で新しいロボットクラスを作成しようとしています。しかし、私は試してみて、「ロボット」が含まれるようにクラス「RightTurnerRobot」を拡張するとき、私は次のエラーを取得する:新しいKarel右折ロボットを作成する際にコンストラクターエラーが発生する

Implicit super constructor Robot() is undefined for default constructor. Must define an explicit constructor

私のコードは以下の通りです、任意のヘルプは高く評価されます。

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(); 
    } 

編集:問題を見つけました。 Robotの代わりにUrRobotを拡張することになっていました。その後、私はコンストラクタを作っ:

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(); 
    } 
} 
+0

ここに「ロボット」クラスを置くことはできますか? –

+0

@ImeshaSudasinghaそれは図書館のルックアップです。 – cunniemm

+0

投稿ロボットはなぜですか?これは標準のJavaクラスです。もちろんOPが彼自身のRobotクラスを作成していない限り。今私が見ているのはその事件です。したがって、Robotクラスにはおそらく引数のないコンストラクタがありません。 – FredK

答えて

0

あなたはそれを拡張しているので、あなたは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(); 
    } 
} 
関連する問題