我有这个代码,我的问题是它在CrearProductoExtranjero
中的ProductoExtranjeroPe = new ProductoExtranjero();
中给出了一个错误,指出构造函数不合适,请帮助
import java.util.* ;
import java.util.Scanner;
public class ProductoExtranjero extends Producto {
private int PaisOrigen;
public ProductoExtranjero(int PaisOrigen, String UnNombre, String UnRubro) {
super(UnNombre, UnRubro);
this.PaisOrigen = PaisOrigen;
}
public ProductoExtranjero(int PaísOrigen) {
this.PaisOrigen = PaisOrigen;
}
public int getPaisOrigen() {
return PaisOrigen;
}
public void setPaisOrigen(int PaísOrigen) {
this.PaisOrigen = PaísOrigen;
}
@Override
public String toString() {
return "ProductoExtranjero{" + "PaiedsOrigen=" + PaisOrigen + "nombre=" + this.getNombre() + "rubro=" + this.getRubro() ;
}
public static Producto CrearProductoExtranjero() {
ProductoExtranjero Pe = new ProductoExtranjero();
Scanner in = new Scanner(System.in);
System.out.println("ingrese País de origen (1-120)");
Pe.setPaisOrigen(in.nextInt());
boolean val= true;
while(val){
System.out.println("Ingrese un nombre del producto: ");
Pe.setNombre(in.nextLine());
int nomlargo;
nomlargo=Pe.getNombre().length();
if (nomlargo<=0){
System.out.println("No ha ingresado un nombre producto valido. tiene que ser mayor a TRES!! caracteres.");
}
else{
val=false;
}
}
int opcion = 0;
boolean entrar = true;
while (entrar) {
System.out.println("Ingrese el rubro del producto. Tomando en cuenta que: \n1.Limpieza \n2.Cosmetica "
+ "\n3.Computacion \n4.Educacion \n5.Electrodomesticos \n6.Varios");
opcion = in.nextInt();
switch (opcion) {
case 1:
Pe.setRubro("Limpieza");
entrar = false;
;
case 2:
Pe.setRubro("Cosmetica");
entrar = false;
case 3:
Pe.setRubro("Computacion");
entrar = false;
case 4:
Pe.setRubro("Educacion");
entrar = false;
case 5:
Pe.setRubro("Electrodomesticos");
entrar = false;
case 6:
Pe.setRubro("Varios");
entrar = false;
default:
System.out.println("Ha ingresado un rubro no existente!!");
} break;
}
return Pe;
}
}
答案 0 :(得分:2)
以下是您的两个构造函数:
public ProductoExtranjero(int PaisOrigen, String UnNombre, String UnRubro) {
super(UnNombre, UnRubro);
this.PaisOrigen = PaisOrigen;
}
public ProductoExtranjero(int PaísOrigen) {
this.PaisOrigen = PaisOrigen;
}
他们都有参数。但是这一行:
ProductoExtranjeroPe = new ProductoExtranjero();
...是调用构造函数而不指定任何参数的字符串。
您需要指定无参数构造函数,或在构造函数调用中指定参数。
(我还强烈建议您开始遵循Java命名约定。)