当我试图这样做时我得到问题说
Constructor Product in class Product cannot be applied to given types;
required: java.lang.String,int,double; found: java.lang.String;
reason: actual and formal arguments lists differ in length
我有两节课:
import java.text.*
public class Product {
private String name;
private int stock;
private double price;
public Product(String name, int stock, double price) {
this.name = name;
this.stock = stock;
this.price = price;
}
public double sell(int n) {
stock = n;
return stock;
}
public void restock(int n) {
}
@Override
public String toString() {
return stock + name + "at $"+price;
}
}
public class Store {
public static void main(String[] args) {
new Store().use();
}
private Product product;
private Product cashRegister;
public Store() {
product = new Product("Sticky tape");
cashRegister = new Product("Cash register");
}
public void use() {
}
private void sell() {
}
private void restock() {
}
private void viewStock() {
}
private void viewCash() {
}
private void help() {
System.out.println("Menu options");
System.out.println("s = sell");
System.out.println("r = restock");
System.out.println("v = view stock");
System.out.println("c = view cash");
System.out.println("x = exit");
}
}
我知道我必须为Product
构造函数声明。但我想我已经做到了。如果有人知道我哪里出错了,请解释一下。谢谢!
答案 0 :(得分:3)
你没有带有一个param的构造函数,所以你不能使用这个表单
product = new Product("Sticky tape");
使用一个参数重新构造一个构造函数或填充所有参数
product = new Product("Sticky tape", 10, 20.0);
答案 1 :(得分:3)
你需要:
重载构造函数
public Product(String name){...}
或使用正确的只有一个构造函数创建Product的实例:
public Product(String name, int stock, double price)
如果你超载那么会发生这样的事情
public Product(String name){
this(name, 0, 0.0);
}
所以你从另一个构造函数中调用一个构造函数
答案 2 :(得分:3)
这是学习构造函数重载的时候了。重载来自OOP。
您可以使用重载到方法和构造函数。重载意味着可以实现该方法的相同方法名称
。不仅如此,
请记住方法名称必须相同。
对于构造函数也是一样的。如果您使用构造函数,则可以添加如下参数:
//constructor with one parameter
public Product(String name) {
this.name = name;
this.stock = 0;//or whatever your default value
this.price = 0;//or whatever your default value
}
//constructor with two parameter
public Product(String name, , int stock) {
this.name = name;
this.stock = stock;
this.price = 0;//or whatever your default value
}
public Product(String name, int stock, double price) {
this.name = name;
this.stock = stock;
this.price = price;
}
就像你可以添加任意多个。
或者您可以使用一个构造函数并在创建对象时传递参数以匹配构造函数的实现。如下所示:
product = new Product("Sticky tape", 0, 0);
这不是完整的说明,您可以阅读this了解更多信息
答案 3 :(得分:1)
错误在这些代码行中:
product = new Product("Sticky tape");
cashRegister = new Product("Cash register");
定义的Product构造函数需要:
public Product(String name, int stock, double price)
答案 4 :(得分:1)
在Product类中没有构造函数,它接受单个String参数。像这样创建它:
public Product(String name) {
this.name = name;
}
在import语句中,您忘记了分号:
import java.text.*;
答案 5 :(得分:1)
您的程序有3个编码错误,其中包括
您没有创建参数化构造函数 这应该是
公共产品(字符串名称){this.name = name;}
在您的产品类中。
你的代码就像纠正后的
class Product {
private String name;
private int stock;
private double price;
public Product(String name, int stock, double price) {
this.name = name;
this.stock = stock;
this.price = price;
}
public Product(String name) {
this.name = name;
}
public double sell(int n) {
stock = n;
return stock;
}
public void restock(int n) {
}
@Override
public String toString() {
return stock + name + "at $"+price;
}
}
public class Store {
public static void main(String[] args) {
Store s = new Store();
System.out.println(s.product);
System.out.println(s.cashRegister);
}
private Product product;
private Product cashRegister;
public Store() {
product = new Product("Sticky tape");
cashRegister = new Product("Cash register");
}
}