java - 没有找到适合 ProductoExtranjero 的构造函数

标签 java constructor

我有这段代码,我的问题是它在 ProductoExtranjeroPe = new ProductoExtranjero(); 中的方法 CrearProductoExtranjero 中给了我一个错误,表明构造函数是'不合适,请帮忙

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

关于java - 没有找到适合 ProductoExtranjero 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108366/

相关文章:

java - XSD 验证错误 : Cannot find the declaration of element 'xs:schema'

有和没有主体的 C++ 部分构造函数表现不同

android - __attribute__ ((__constructor__)) 在安卓中

java - 设计Java API

java - 通过构造函数将值传递到数据库

java - Jaybird/JDBC + 路径中的国家字符

java - 将 Java 泛型用于带有 WHERE 子句的 JPA findAll() 查询

java - 如何反序列化具有参数化构造函数的对象

C++:仅接受字符串文字的构造函数

c++ - 将子变量传递给父构造函数