我在创建课程时遇到问题。我应该得到狗的名字和年龄,然后在人类年份打印它的年龄,名字和年龄(狗年龄* 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无法解决变量等等与其他变量等等。年龄部分仅仅是我遇到问题的名字。
感谢任何和所有帮助。我四处搜索,找不到与我的问题有关的任何内容。感谢。
答案 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
。