Enviar línea de datos con comas a constructor.

Iniciado por splendid37, 18 Noviembre 2017, 12:58 PM

0 Miembros y 1 Visitante están viendo este tema.

splendid37

Hola.

Tengo la siguiente duda de como puedo enviar los datos a un constructor mediante el siguiente formato con Scanner : '2.3,4,palabra'

Código (java) [Seleccionar]


    // Constructor
     
    public Producto(double precio, int cantidad, String articulo) {
                this.precio = precio;
                this.cantidad = cantidad;
                this.articulo = articulo;
            }



Código (java) [Seleccionar]


    // Objeto
     
    Scanner entrada=new Scanner(System.in);
     
    Producto producto1 = new Producto();



¿Como puedo introducir la línea '2.3,4,palabra' en scanner y enviarla al constructor?

Por separado si sé hacerlo parámetro a parámetro pero no veo la forma de hacerlo en una línea sola con los datos separados por parámetros.

Gracias, Saludos.

ivancea96

No hay una forma de hacerlo así en 1 línea.
Realmente, no es necesario a la hora de hacer estos programas.

Ahora bien, tienes la opción de crear una función tipo "create<Producto>(entrada)", que lea la línea, acceda al constructor de la clase por reflection y trate de inferir los argumentos a partir de los constructores de la clase y de la línea leída.

Esto no es tan sencillo, así que mi recomendación es que lo evites. No es necesario complicar tanto un programa.

HardC0d3


La única forma que se me ocurre (muy costosa), es recibir en el constructor un único parámetro String, luego trocear la cadena con el método split() con separador de campos ','  (coma), convertir las Strings al tipo apropiado y asignar cada valor de la posición del vector a tus variables de clase.

Pero es mejor que lo hagas de la forma convencional y sin complicaciones.