Конструктор перегрузки с классом в параметре - PullRequest
0 голосов
/ 05 сентября 2018

давал первый код ниже. Как правильно создать класс черепах? - В основном я пытаюсь, чтобы это не показывало ошибку: Turtle t = new Turtle(STARTX, STARTY, w);

Я думаю, что моя проблема может быть здесь с конструктором перегрузки: public Turtle (double STARTX, double STARTY, Class w )

import java.awt.*; //import color;

public class PA1{

  //These are constant values that you can use
  private static  final int STARTX = 100;
  private static  final int STARTY = 100;
  private static  final int CHAR_WIDTH = 100;
  private static  final int CHAR_HEIGHT = 100;
  private static  final int CHAR_SPACING = 50;

  public static void main(String[] args){

    //set the width and height of the world
    int width = 1000;
    int height = 1000;
    World w = new World(width, height);

    //create a turtle at the starting x and starting y pos
    Turtle t = new Turtle(STARTX, STARTY, w);

    //Set the turtle pen width.
    t.setPenWidth(15);

    //This is just an example. Feel free to use it as a reference. 
    //draw a T
    //Assume that the turtle always starts in the top left corner of the character. 
    t.turn(90); 
    t.forward(CHAR_WIDTH);
    t.backward(CHAR_WIDTH/2);
    t.turn(90);
    t.forward(CHAR_HEIGHT); 

    //Move the turtle to the next location for the character
    t.penUp();
    t.moveTo(STARTX+CHAR_WIDTH+CHAR_SPACING*1, STARTY);
    t.penDown(); 



    //WRITE YOUR CODE HERE

  }
}

Я создал 2 новых класса:

public class World {
    //World w = new World(width, height);
    private double defaultWidth;
    private double defaultLength;

    public World () {
        defaultWidth = 0.0;
        defaultLength = 0.0; }

    public World (double width, double length){
        defaultWidth = width;
        defaultLength = length; }


    public double getWidth () {
        return defaultWidth; }


    public double getLength () {
        return defaultLength; }



    public void setWidth (double width){
        defaultWidth = width;   }


    public void setLength(double length){
        defaultLength = length; }



}

и

public class Turtle {

    // Turtle t = new Turtle(STARTX, STARTY, w);

    private double defaultSTARTX;
    private double defaultSTARTY;
    //private double defaultW;

    public Turtle ()    {
        defaultSTARTX = 0.0;
        defaultSTARTY = 0.0; 
        //defaultW = 0.0;
                        }

    public Turtle (double STARTX, double STARTY, Class w ){
        defaultSTARTX = STARTX;
        defaultSTARTY = STARTY; 
        //defaultW = w;
        }

    public double getSTARTX () {
        return defaultSTARTX; }


    public double getSTARTY () {
        return defaultSTARTY; }



    public void setSTARTX (double STARTX){
        defaultSTARTX = STARTX;         }


    public void setSTARTY(double STARTY){
        defaultSTARTY = STARTY;         }



}

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Я нашел много проблем в коде, который вы предоставили выше. Я не знаю, был ли это полный код или нет. Я пытался исправить все проблемы в вашем коде - связанные с вашим конструктором и другими стандартами Java. Ниже у меня работает -

public class MyClass {

    private static  final int STARTX = 100;
    private static  final int STARTY = 50;

    public static void main(String args[]) {
        int width = 1000;
        int height = 1000;
        World w = new World(width, height);

        //create a turtle at the starting x and starting y pos
        Turtle t = new Turtle(STARTX, STARTY, w);

        System.out.println(t.getSTARTX() + " : " + t.getSTARTY() + " : " + t.getWorld().getLength() + " : " + t.getWorld().getWidth());
    }
}

class World {
    private double width;
    private double length;

    public World () {
        this.width = 0.0;
        this.length = 0.0;
    }

    public World (double width, double length) {
        this.width = width;
        this.length = length;
    }

    public double getWidth () { return this.width; }
    public double getLength () { return this.length; }
    public void setWidth (double width){ this.width = width; }
    public void setLength(double length){ this.length = length; }
}

class Turtle {
    private double STARTX;
    private double STARTY;
    private World world;

    public Turtle () {
        this.STARTX = 0.0;
        this.STARTY = 0.0; 
        this.world = new World();
    }

    public Turtle (double STARTX, double STARTY, World w) {
        this.STARTX = STARTX;
        this.STARTY = STARTY; 
        this.world = w;
        }

    public double getSTARTX () { return this.STARTX; }
    public double getSTARTY () { return this.STARTY; }
    public World getWorld(){ return this.world; }
    public void setSTARTX (double STARTX){ this.STARTX = STARTX; }
    public void setSTARTY(double STARTY){ this.STARTY = STARTY; }
    public void setWorld (World world){ this.world = world; }

}

Надеюсь, это разрешит ваш запрос. Удачного кодирования. :)

0 голосов
/ 05 сентября 2018

Если вам действительно нужно передать объект World объекту Turtle, вы должны определить конструктор Turtle следующим образом:

public Turtle (double STARTX, double STARTY, World w ){
    defaultSTARTX = STARTX;
    defaultSTARTY = STARTY; 
    defaultW = w;
}

Кроме того, вы должны объявить "w" не как double, как вы это делали в какой-то момент, а как переменную класса "World" в Turtle:

private World defaultW;

Передав Class в качестве параметра конструктора, вы пытаетесь передать общее определение класса, а не Object экземпляр какого-либо класса. Разница невелика, но есть, и это ваша наиболее вероятная проблема.

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