在点类中设置字符串然后在驱动程序类

时间:2015-09-28 02:58:39

标签: java

我在创建课程时遇到问题。我应该得到狗的名字和年龄,然后在人类年份打印它的年龄,名字和年龄(狗年龄* 7) 当我尝试在点类中设置狗的名字然后在驱动程序类中使用它时,我的问题就出现了。我已经包括了我的积分课,Dog和我的司机班,Kennel。

点类:狗

public class Dog 
{

private double age;
private String name;

//---------------------------------------------------------------------------------------
// Constructor
//---------------------------------------------------------------------------------------
public Dog() 
{

}

public Dog(double age)
{
    this.age = age;
}
public void setAge(double age)
{
    this.age = age;
}
public double getAge(double age)
{
    return age;
}
public Dog(String name)
{
    this.name = name;
}
public void setName(String dogName)
{
    dogName = this.name;
}
public String getName()
{
    return name;
}
public double personYears()
{
    return age * 7;
}
public String toString()
{
    return "Dog's Name: " + name + " Dog's Age: " + age + " Dog's age in person years: " + personYears();
}

}

驱动程序类:Kennel

public class Kennel
{

public static void main(String[] args)
{
    Dog dog1 = new Dog();
    Dog dog2 = new Dog();
    Dog dog3 = new Dog();

    dog1.setAge(5.0);
    dog2.setAge(6.0);
    dog2.setAge(7.0);

    dog1.setName(Spike);
    dog2.setName(Shelby);
    dog3.setName(Brutus);

    System.out.println(dog1.toString());
    System.out.println(dog2.toString());
    System.out.println(dog3.toString());


}

}

它没有在代码上显示它,但是当我尝试运行驱动程序类时,我得到了dog.setName方法的错误。它说Spike无法解决变量等等与其他变量等等。年龄部分仅仅是我遇到问题的名字。

感谢任何和所有帮助。我四处搜索,找不到与我的问题有关的任何内容。感谢。

1 个答案:

答案 0 :(得分:0)

这些代码行是错误的。你在哪里告诉编译器这些变量是什么?

dog1.setName(Spike);
dog2.setName(Shelby);
dog3.setName(Brutus);

我认为你的意思是:

dog1.setName("Spike");
dog2.setName("Shelby");
dog3.setName("Brutus");

现在,这些不是标识符,但它们是字符串文字。此外,您的二传手不正确。

public void setName(String dogName){
    dogName = this.name;
}

这应该是:

public void setName(String dogName){
    this.name = dogName;
}

您不想更改本地参数dogName,而是想更改String字段name