当前位置: 首页 > 知识库问答 >
问题:

构造函数错误(实际参数列表和正式参数列表的长度不同)?

时修贤
2023-03-14

我不明白为什么它会给我一个错误代码,找不到合适的构造函数。

RegularPie(String,String,String,String,String,String,Double)
super(theName, theCrust, theSize, theSauce, theCheese, theTopping, thePrice);
^
constructor RegularPie.RegularPie(String,String,String,String,String) is not applicable
(actual and formal argument lists differ in length)
constructor RegularPie.RegularPie() is not applicable
(actual and formal argument lists differ in length)
Process completed.

怎么了?

public class RegularPie
{

    private String name;
    private String size;
    private String crust;
    private String sauce;
    private String cheese;


    public RegularPie()
    {
        name     = "regular pie";
        crust    = "Hand- Tossed";
        size     = "medium";
        sauce    = "marinara";
        cheese = "mozzarella";
    }

    public RegularPie(String theName, String theCrust, String theSize, String theSauce, String theCheese)
    {
        if(theName ==null ||theCrust ==null ||theSize ==null ||theSauce ==null ||theCheese ==null)
        {
            System.out.println("Pizza not created");
            System.exit(0);
        }
        name     = theName;
        crust    = theCrust;
        size     = theSize;
        sauce    = theSauce;
        cheese = theCheese;

    }

    public String getName()
    {
        return name;
    }
        public String getCrust()
    {
        return crust;
    }
        public String getSize()
    {
        return size;
    }
        public String getSauce()
    {
        return sauce;
    }
        public String getCheese()
    {
        return cheese;
    }
    public void setName(String newName)
    {
        if (newName == null)
        {
            System.out.println("Error with name");
            System.exit(0);
        }
        else
        {
            name = newName;
        }
    }
    public void setCrust(String newCrust)
    {
        if (newCrust == null)
        {
            System.out.println("Error with crust");
            System.exit(0);
        }
        else
        {
            crust = newCrust;
        }
    }
    public void setSize(String newSize)
    {
        if (newSize == null)
        {
            System.out.println("Error with size");
            System.exit(0);
        }
        else
        {
            size = newSize;
        }
    }
    public void setSauce(String newSauce)
    {
        if (newSauce == null)
        {
            System.out.println("Error with suace");
            System.exit(0);
        }
        else
        {
            sauce = newSauce;
        }
    }
    public void setCheese(String newCheese)
    {
        if (newCheese == null)
        {
            System.out.println("Error with topping");
            System.exit(0);
        }
        else
        {
            cheese = newCheese;
        }
    }

    public String toString()
    {
        return("You order the " + name + " pizza, that has a " + crust + " crust, a standard " + size + " size, a " + sauce +" sauce, and a " + cheese + " topping.");
    }

    public boolean equals(RegularPie otherRegularPie)
    {
        return (name.equals(otherRegularPie.name)&&crust.equals(otherRegularPie.crust)&&size.equals(otherRegularPie.size)&&sauce.equals(otherRegularPie.sauce)&&cheese.equals(otherRegularPie.cheese));
    }

    public class SpecialOne extends RegularPie
    {
        private String topping;
        private double price;

    public SpecialOne()
    {
        super();
        topping = "";
        price = 0;
    }

    public SpecialOne(String theName, String theCrust, String theSize, String theSauce, String theCheese, String theTopping, Double thePrice)
    {
        super(theName, theCrust, theSize, theSauce, theCheese, theTopping, thePrice);
        topping = theTopping;
        price = thePrice;
    }

    public SpecialOne(SpecialOne originalObject)
    {
        super(originalObject);
        topping = originalObject.topping;
        price = originalObject.price;

    }

    public String getTopping()
    {
        return topping;
    }
    public double getPrice()
    {
        return price;
    }
    public void setTopping(String newTopping)
    {
        topping = newTopping;
    }
    public void setPrice(Double newPrice)
    {
        price = newPrice;
    }

    }
}

共有1个答案

白信鸿
2023-03-14

当您调用Super()时,您正在调用parrent的构造函数。因此SpecialOne调用Super()调用RegarPie的构造函数,但您将七个Strings传递到该构造函数中,并且RegarPie没有接受七个Strings的构造函数。在SpecialOne调用中删除theTop,the Price。您在SpecialOne构造函数中明确设置它们,因为它们是该类的成员,而不是基类的成员。

 类似资料:
  • 我一直在拼命地尝试让这段代码工作。这是我第一次使用对象/构造函数(我是一个新程序员),这让我很困惑。我完全诚实;我不知道问题是什么。我已经尝试了很多东西,所以这段代码相当混乱。我也受够了,重新开始制作第二个代码,它也因为与第一个代码相同的原因而不起作用,尽管该代码的结构略有不同。我将在下面发布这两次尝试,希望有人能看到我的错误。谢谢! 尝试1: 尝试2: 任何帮助都将不胜感激。此外,因为我认为我的

  • 所以我接到了一个任务,我必须在一段有点大而草率的代码中查找并修复许多错误。我只剩下最后一个了,我找不到解决这个问题的办法。我读过类似的场景,人们会犯同样的错误,但我无法将它们与我的代码联系起来。这就是我得到错误的地方:

  • 我正在用Java编写一个Volume and Book类,以帮助我更好地理解构造函数和对象——基本上是OOP的更广泛方面。当我尝试创建一个主类时,我收到一个错误,其中说明了以下内容: “类卷中的构造函数卷不能应用于给定类型;必需:字符串、整数、Book[] 找到:无参数 原因:实际列表和正式列表的长度不同 ----” 这是我目前掌握的代码。 一、卷类: } 这里是main,我收到了上面提到的错误:

  • 我目前的一项作业(用Java完成)有问题。我得到了一个关于抽象类和子类的项目。然而,我一直在为它创建复制构造函数,因为我不断地得到错误:实际的和正式的参数列表的长度不同。这里,arr是抽象的“超级”类,其内部的构造函数仅被定义(如下所示)。构造函数具有与2D数组的行(m)和列(n)相对应的参数。在Board类(扩展arr)中,我必须同时定义构造函数和复制构造函数。我已经使用super(m,n)定义

  • 我开始学习Java,遇到了一个我无法解决的问题。我有一个名为MyClass的类,带有构造函数。我想将该构造函数设置为访问私有字段: 当我删除构造函数时,我可以从另一个类调用somethingElse。然而,当我沿着这条路线尝试一些东西时 我在data=new MyClass()处得到一个错误,即实际参数和形式参数的长度不同,并且“需要long,found no参数”。我该如何解决这个问题?

  • 当我试图在的()括号中放入一些内容时,出现了错误: 类Friends中的构造函数Friends不能应用于给定类型。必填:无参数。Found:字符串,int.原因:实际的或正式的参数列表的长度不同。 但是当我取出参数时,我的朋友列表只显示“null 0”。即使我有也没有设置这些值吗? 而且,当我试图删除一个朋友,它没有任何作用。在源代码中,它确实会提出一个警告, 对util.java.Collect