Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “错误:类Hal9000中的构造函数Hal9000不能应用于给定类型;”_Java - Fatal编程技术网

Java “错误:类Hal9000中的构造函数Hal9000不能应用于给定类型;”

Java “错误:类Hal9000中的构造函数Hal9000不能应用于给定类型;”,java,Java,您好,我正在完成一项任务,我们正在创建一个Hal9000。我创建了以下代码: /** * Hal9000 simulate an AI that interacts with the crew * of a space ship. * */ public class Hal9000 { private String name; /** * @return returns the name of the crew member. */ publ

您好,我正在完成一项任务,我们正在创建一个Hal9000。我创建了以下代码:

/**
 * Hal9000 simulate an AI that interacts with the crew
 * of a space ship.
 * 
 */
public class Hal9000
{
    private String name;
    /**
     * @return returns the name of the crew member.
     */
    public String getName()
    { return name;
    }
    /**
     * Sets a new crew name @param for the crew member
     */
    public void setName(String newName)
    { String name = newName; 
    }
    /**
     * Hal greets the crew member.
     */
    public String greetCrewMember()
    { return "Welcome," + name;
    }
    /**
     * @return returns a string consisting of "I am sorry,name, I can't + whatToDo"
     * where name is the crew member's name.
     */
    public String doCommand(String whatToDo)
    { return "I am sorry,"+ name + ". I can't" +whatToDo;
    }
}
还有一个类测试代码;但当我将代码提交到老师的代码检查器时,我无法编辑此代码

public class Hal9000Tester
{
    public static void main(String[] args)
    {
        Hal9000 hal = new Hal9000("Dave");
        System.out.println(hal.greetCrewMember());
        System.out.println("Expected: Welcome, Dave");
        System.out.println(hal.doCommand("engage drive"));
        System.out.println("Expected: I am sorry, Dave. I can't engage drive");
        hal.setName("Aruna");
        System.out.println(hal.doCommand("power down"));
        System.out.println("Expected: I am sorry, Aruna. I can't power down");
    }
}
对于第一个代码,我得到一个错误: /tmp/codecheck/170917232824903863465653579553/submission/Hal9000Tester.java:5:错误:类Hal9000中的构造函数Hal9000不能应用于给定类型

    Hal9000 hal = new Hal9000("Dave");
                  ^
必需:无参数 找到:字符串 原因:实际参数列表和正式参数列表长度不同 1错误


由于我对编码非常陌生,这是我的第一门课程,我不确定问题是什么以及如何解决它。感谢您的阅读,希望您能帮助我。

您的类需要一个构造函数。当Hal9000Tester使用新的Hal9000Dave时,它会在类Hal9000中查找名为Hal9000的方法,该方法将字符串作为其参数

默认情况下,未声明构造函数的类将获得编译器添加的构造函数方法。添加的构造函数不接受任何参数,这就是导致错误的原因

您需要以下内容:

public class Hal9000 {

    // ...

    public Hal9000(String nameOfCrewMember){
        this.setName(nameOfCrewMember);
    }

    // ...

}
另外,您的setName实际上并没有设置机组成员的姓名。它只是创建一个局部变量

你需要像这样的东西:

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

有关构造函数的一些信息[此处]java文档。

您的问题是,您正在尝试创建对象的实例,但尚未使用正确的参数设置构造函数

public Hal9000(String name)
{
    setName(name);
}

此添加将允许您的代码运行。我建议在尝试编写太多代码之前,多了解面向对象编程的工作原理。Javadocs为此提供了很好的资源。

请注意,您可能需要return Welcome,+在末尾指定一个空格,而不是return Welcome,+name。我也一样,对不起,我不能。