2014-11-24 3 views
0

У меня есть этот код и моя проблема в том, что он дает мне ошибку в methdod CrearProductoExtranjero в ProductoExtranjeroPe = new ProductoExtranjero();, который говорит, что конструктор не подходит, пожалуйста, помогитеНет подходящий конструктор найдено для 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; 
    } 
} 

ответ

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 именования.)

+0

нормально, так, что вы имеете в виду указать аргументы в вашем вызове конструктора ?, причиной того, что я хочу сделать, это вызвать этот метод в мой основной класс, поэтому пользователь программы может добавить productos extranjeros, я новичок в программировании thanx для помощи и плохо смотрю на соглашения об именах java –

+1

@SantiagoMarquez: Я имею в виду «новый ProductoExtranjero (10)» или что-то в этом роде. Если честно, если вы новичок в программировании, я настоятельно рекомендую вам внимательно прочитать хорошую книгу. Переполнение стека отлично подходит для конкретных вопросов, но это не очень хороший способ изучения основ языка. –

Смежные вопросы