繁体   English   中英

找不到适用于ProductoExtranjero的构造函数

[英]No suitable constructor found for ProductoExtranjero

我有这段代码,我的问题是它给我在ProductoExtranjeroPe = new ProductoExtranjero();中的方法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;
    }
}

这是您的两个构造函数:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM