对象未在另一个类中读取-Java

对象未在另一个类中读取-Java,java,Java,如果以前有人问过,我道歉 这里有两个文件:Dog.java和DogTest.java Dog.java: public class Dog{ String name; public Dog(String name){ System.out.println("Name chosen is : " + name); } public static void main(String[]args){ Dog dog1 = new Dog(

如果以前有人问过,我道歉

这里有两个文件:Dog.java和DogTest.java

Dog.java:

public class Dog{
    String name;

    public Dog(String name){
        System.out.println("Name chosen is : " + name);
    }
    public static void main(String[]args){
        Dog dog1 = new Dog("Big Larry");
        Dog dog2 = new Dog("Mr. Cuddles");
    }
    public void bark(){
        System.out.println(name + " is barking.");
    }
    public void eat(){
        System.out.println(name + " is eating.");
    }
    public void sleep(){
        System.out.println(name + " is sleeping.");
    }
}
下面是DogTest.java:

public class DogTest {
    public static void main(String[] args) {
        dog1.bark();
        dog2.bark();
        dog1.eat();
        dog2.sleep();
        dog1.sleep();
    }
}
现在,在dogJava文件中,它显示dog1和dog2没有初始化,正如在我的IDE中所说的。然而,在DogTest文件中,我将对象变量放在那里。我不明白的是,为什么它们没有初始化

如果我在DogTest.java文件中重新初始化它们,DogTest会编译,没有错误,但是当它们应该读到“Big Larry正在吠叫”或“Mr.Cuddles正在睡觉”时,它会在输出中调用它们“null”,而不是“null正在吠叫”

我想了解这一点。非常感谢您的帮助,祝您度过愉快的一天!请在评论中留下任何问题。

这是您的问题:

public Dog(String name){
    System.out.println("Name chosen is : " + name);
}
您将名称传递给构造函数,但实际上并没有设置值

将此更改为:

public Dog(String name){
    System.out.println("Name chosen is : " + name);
    this.name = name;
}
不知道你为什么需要打印对账单

另外,在测试类中,不要忘记实际声明和初始化变量:

Dog dog1 = new Dog("Max");
dog1.bark();
它们没有在您的测试类中初始化,因为它们是在主方法的本地范围内初始化的,这是/是您的测试类无法触及的。

这里是您的问题:

public Dog(String name){
    System.out.println("Name chosen is : " + name);
}
您将名称传递给构造函数,但实际上并没有设置值

将此更改为:

public Dog(String name){
    System.out.println("Name chosen is : " + name);
    this.name = name;
}
不知道你为什么需要打印对账单

另外,在测试类中,不要忘记实际声明和初始化变量:

Dog dog1 = new Dog("Max");
dog1.bark();

它们没有在您的测试类中初始化,因为它们是在main方法的本地范围内初始化的,这是/是您的测试类无法触及的。

您有两个不同的文件Dog和DogTest
DogTest无法访问Dog.java-main()中的Dog1和dog2变量方法因此也必须在DogTest中初始化

您可以从Dog.java类中删除main方法

你需要改变你的狗测试

public class DogTest {
    public static void main(String[] args) {
        Dog dog1 = new Dog("Big Larry");
        Dog dog2 = new Dog("Mr. Cuddles");
        dog1.bark();
        dog2.bark();
        dog1.eat();
        dog2.sleep();
        dog1.sleep();
    }
}
您还需要将Dog.java的构造函数更改为

public Dog(String name){
         this.name =name
        System.out.println("Name chosen is : " + name);
    }

您有两个不同的文件Dog和DogTest
DogTest无法访问Dog.java-main()方法中的Dog1和dog2变量,因此您也必须在DogTest中初始化

您可以从Dog.java类中删除main方法

你需要改变你的狗测试

public class DogTest {
    public static void main(String[] args) {
        Dog dog1 = new Dog("Big Larry");
        Dog dog2 = new Dog("Mr. Cuddles");
        dog1.bark();
        dog2.bark();
        dog1.eat();
        dog2.sleep();
        dog1.sleep();
    }
}
您还需要将Dog.java的构造函数更改为

public Dog(String name){
         this.name =name
        System.out.println("Name chosen is : " + name);
    }

您在一个文件中初始化,并试图在另一个文件中访问,这将是一个编译错误。实际上,您不需要两个文件。因为在Dog文件中有一个main方法,所以可以在那里测试Dog,如下所示。 此外,还需要为字段指定名称

public class Dog {
    String name;

    public Dog(String name) {
        this.name = name;
        System.out.println("Name chosen is : " + name);
    }

    public static void main(String[] args) {
        Dog dog1 = new Dog("Big Larry");
        Dog dog2 = new Dog("Mr. Cuddles");
        dog1.bark();
        dog2.bark();
        dog1.eat();
        dog2.sleep();
        dog1.sleep();
    }

    public void bark() {
        System.out.println(name + " is barking.");
    }

    public void eat() {
        System.out.println(name + " is eating.");
    }

    public void sleep() {
        System.out.println(name + " is sleeping.");
    }
}

您在一个文件中初始化,并试图在另一个文件中访问,这将是一个编译错误。实际上,您不需要两个文件。因为在Dog文件中有一个main方法,所以可以在那里测试Dog,如下所示。 此外,还需要为字段指定名称

public class Dog {
    String name;

    public Dog(String name) {
        this.name = name;
        System.out.println("Name chosen is : " + name);
    }

    public static void main(String[] args) {
        Dog dog1 = new Dog("Big Larry");
        Dog dog2 = new Dog("Mr. Cuddles");
        dog1.bark();
        dog2.bark();
        dog1.eat();
        dog2.sleep();
        dog1.sleep();
    }

    public void bark() {
        System.out.println(name + " is barking.");
    }

    public void eat() {
        System.out.println(name + " is eating.");
    }

    public void sleep() {
        System.out.println(name + " is sleeping.");
    }
}

请在下面查找修复代码:

public class Dog {
    String name;

    public Dog(String name) {
        System.out.println("Name chosen is : " + name);
        this.name = name;
    }

    public static void main(String[] args) {
        Dog dog1 = new Dog("Big Larry");
        Dog dog2 = new Dog("Mr. Cuddles");
    }

    public void bark() {
        System.out.println(this.name + " is barking.");
    }

    public void eat() {
        System.out.println(this.name + " is eating.");
    }

    public void sleep() {
        System.out.println(this.name + " is sleeping.");
    }
}
测试等级:

public class DogTest {

    public static void main(String[] args) {

        Dog dog1 = new Dog("Goffy");
        Dog dog2 = new Dog("Cherry");
        dog1.bark();
        dog2.bark();
        dog1.eat();
        dog2.sleep();
        dog1.sleep();
    }

}
在使用变量之前,您必须在第一阶段对其进行初始化,您只需在构造函数中传递值,但没有将其分配给类变量,还请阅读
**此**
关键字及其在java中的重要性

这:


干杯

请在下面查找修复代码:

public class Dog {
    String name;

    public Dog(String name) {
        System.out.println("Name chosen is : " + name);
        this.name = name;
    }

    public static void main(String[] args) {
        Dog dog1 = new Dog("Big Larry");
        Dog dog2 = new Dog("Mr. Cuddles");
    }

    public void bark() {
        System.out.println(this.name + " is barking.");
    }

    public void eat() {
        System.out.println(this.name + " is eating.");
    }

    public void sleep() {
        System.out.println(this.name + " is sleeping.");
    }
}
测试等级:

public class DogTest {

    public static void main(String[] args) {

        Dog dog1 = new Dog("Goffy");
        Dog dog2 = new Dog("Cherry");
        dog1.bark();
        dog2.bark();
        dog1.eat();
        dog2.sleep();
        dog1.sleep();
    }

}
在使用变量之前,您必须在第一阶段对其进行初始化,您只需在构造函数中传递值,但没有将其分配给类变量,还请阅读
**此**
关键字及其在java中的重要性

这:


干杯

dogdog1=新狗()
Dog dog1=新狗()您忘记了空问题您忘记了空问题对于我的类,我们需要2个文件。对于我的类,我们需要2个文件。我确实在DogTest文件中初始化了它们,但在发布之前将它们取出。所以我需要把它们放回去?如果你想保留那个测试类,是的。但是你真的需要那门课吗?你可以在你的Dog类中使用main方法来检查行为。我必须为这个作业所针对的类将它们分开。我确实在DogTest文件中初始化了它们,但在发布之前将它们取出。所以我需要把它们放回去?如果你想保留那个测试类,是的。但是你真的需要那门课吗?你可以在你的狗课上使用main方法来检查它们的行为。我必须在这个作业的课堂上把它们分开。