找不到合适的ProductoExtranjero构造函数

时间:2014-11-24 15:32:38

标签: java constructor

我有这个代码,我的问题是它在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;
    }
}

1 个答案:

答案 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命名约定。)