-2

有人可以检查我的代码并确定为什么我的取货功能不起作用。

-- 为这些程序的发生编写缺失的方法

  • 狗鲍勃=新狗(5);
  • System.out.println(bob);
  • bob.walk();
  • bob.walk();
  • bob.pickUp("网球");
  • System.out.println(bob);
  • bob.drop();
  • bob.bark();
  • System.out.println(bob);

-- 在我定义了 pickUp 方法的课堂上:

    public Head()
{

}

public void pickUp(String object)
{   
    this.object = object;
    System.out.println("Picked up "+object);
}

public String getObject()
{
    return object;
}

public void drop()
{
    System.out.println("Dropped "+object);
    object = null;
}

public void bark()
{
    System.out.println("WOOF!");
}

public String toString()
{
    return "Head is holding "+ object;
}
}

- 我正在使用该方法的另一个类:

public class Dog
{
private int position;
private Leg hind1;
private Leg hind2;
private Leg front1;
private Leg front2;
private Head head = new Head();

//Constructor for Dog class
public Dog(int position)
{
    hind1 = new Leg(position-2);
    hind2 = new Leg(position-2);
    front1 = new Leg(position+2);
    front2 = new Leg(position+2);
}

public void walk()
{
    front1.step();
    front2.step();
    hind1.step();
    hind2.step();
    System.out.println("Pitter patter...");
}

public String toString()
{
    return "Head is holding " + head+", Leg at "+hind1.position+", Leg at "+ hind2.position+", Leg at "+front1.position+", Leg at "+front2.position;
}   

public void pickup()
{
    head.pickUp(head.object);
} 

public void drop()
{
    head.drop();
}

public void bark()
{
    head.bark();
}

PS。head 是我制作的一个新对象,它属于 Head 类,这是第一个代码的来源。我目前正在尝试让第二个代码工作以显示头部拾取的拾取对象。

-编辑:即使我确实输入了一个字符串(例如head.pickUp(“ball”);),当我尝试运行程序时它仍然显示“找不到符号-method.pickUp(java.lang.String)” .

4

1 回答 1

2

已编辑(第三次!):既然您已经发布了代码,我已经确认我在下面的答案是正确的。Tl; dr - 您正在尝试在 head.object 设置之前使用它。您应该传递给 pickUp 的是一个字符串,它代表您要拾取的对象的名称。例如,head.pickUp("ball");


如果您能进一步澄清“不工作”的含义,这将有所帮助-但是,您在这里似乎遇到了一种先有鸡还是先有蛋的问题:

如果我没看错,您的代码看起来像这样吗?(在您的评论中包括整个班级可能会有所帮助)

public class Head {

   String object;

   public void pickUp(String object)
   {   
       this.object = object;
       System.out.println("Picked up "+object);
   }

}

public class SomeOtherClass {

   Head head = new Head();

   public void pickup()
   {
       head.pickUp(head.object);

   } 
}

为清楚起见(再次)编辑 - 看起来您正在尝试使用拾取功能(SomeOtherClass 中的那个)来定义头部的对象属性。但是,通过使用 head.object 调用它,您假定已经定义了 head.object。您实际上在哪里设置要使用的字符串?

目前还不清楚您要在这里完成什么 - 但您可能想尝试 1) 在头类的构造函数中设置 head.object 。或 2) 使用 head.object 以外的字符串(尚未设置)调用 head.pickUp。- 对于初学者,尝试用“Hello World”替换 head.object。或者,如果我完全误解了你的意图,也许给我们更多的背景信息?

已编辑 - 因为我意识到您的拾取功能不在 Head 中。

于 2013-03-19T16:53:09.290 回答