首页 > 解决方案 > Java 商店库存

问题描述

我必须创建一个执行以下操作的 java 程序:

接收以下字符串:

1&Refrigerado&1300&55000&223&-2
1&Norefrigerado&3000&20000&230&EEUU
2

输出:

***Inventario de productos***

       Producto Refrigerado - Código: 223
       costo: 55000 pesos
       cantidad: 1300
       temperatuta: -2 grados centígrados

       Producto Norefrigerado - Código: 230
       costo: 20000 pesos
       cantidad: 3000
       país: EEUU 

之后,当 & 符号出现时拆分字符串。

之后,它必须被发送到一个名为“seleccionaropciones”的函数,其中会有一个带有不同选项的swich case。

这是名为“Tienda”的主类的代码。

import java.util.Scanner;

    public class Tienda {
    
       
    public static void seleccionaropciones(int opc, String nombre,String cantidad,String costo,String codigo,String temperatura){
        
            switch(opc){
                case 1:
                    if(nombre.equals("Refrigerado")){
                        Refrigerado usu = new Refrigerado(nombre, cantidad, costo, codigo, temperatura);
                        usu.mostrardatos();
                    }else{
                        NoRefrigerado a = new NoRefrigerado(temperatura, nombre, cantidad, costo, codigo, temperatura);
                        a.mostrardatosNo();
                    }
                    break;
                case 2:
                    System.out.println("Mostrar datos");
                break;
               
                case 3:
                    System.out.println("Adios A todos");
                break;
                
        }
        
    }

    public static void main(String[] args) {
        // TODO code application logic here
        
            Scanner sc = new Scanner(System.in);
            String s = sc.nextLine();
            //String s = "1&Norefrigerado&3000&20000&230&EEUU";
            String[] line = s.split("&");  
            int cod = Integer.parseInt(line[0]);
            int size = line.length;
        
            if(size > 1){
                String nombre = line[1];
                String cantidad = line[2];
                String costo = line[3];
                String codigo = line[4];
                String temperatura = line[5];
                seleccionaropciones(cod,nombre,cantidad,costo,codigo,temperatura);
            }else{
                seleccionaropciones(cod,null,null,null,null,null);
            }
            
       /*
        System.out.println("nombre: " + nombre + "-" + "Código: " + codigo);
        System.out.println("costo: " + costo);
        System.out.println("cantidad: " + cantidad);
        System.out.println("temperatura: " + temperatura + " grados centígrados");
      */
         
    }
    
}

情况1:必须将控制台输入的数据保存在继承了另外两个类(Refrigerado和NoRefrigerado)的产品类中。

情况2:显示保存的数据

情况3:退出

产品代码:

public class Producto {
    
    public String refrigerado;
    public String cantidad;
    public String costo;
    public String codigo;
    public String temperatura;

    
    public Producto(String refrigerado, String cantidad, String costo, String codigo, String temperatura) {
        this.refrigerado = refrigerado;
        this.cantidad = cantidad;
        this.costo = costo;
        this.codigo = codigo;
        this.temperatura = temperatura;
  
    }

}

代码冰箱:

public class Refrigerado extends Producto{
    
    public String temperatura;

    public Refrigerado(String refrigerado, String cantidad, String costo, String codigo, String temperatura) {
        super(refrigerado, cantidad, costo, codigo, temperatura);
        this.temperatura = temperatura;
    }

    public void mostrardatos(){
        System.out.println("nombre: " + refrigerado + " - " + "Código: " + codigo);
        System.out.println("costo: " + costo);
        System.out.println("cantidad: " + cantidad);
        System.out.println("temperatura: " + temperatura + " grados centígrados"); 
    }

代码NoRefrigerado:

public class NoRefrigerado extends Producto {
    
   public String pais;

    public NoRefrigerado(String pais, String refrigerado, String cantidad, String costo, String codigo, String temperatura) {
        super(refrigerado, cantidad, costo, codigo, temperatura);
        this.pais = pais;
    }


     public void mostrardatosNo(){
        System.out.println("nombre: " + refrigerado + " - " + "Código: " + codigo);
        System.out.println("costo: " + costo);
        System.out.println("cantidad: " + cantidad);
        System.out.println("pais: " + pais); 
    }
   
}

这是 UML:

在此处输入图像描述

我的问题如下。

如何保存产品,如何根据所需的输出显示它们。

另外,我如何重复该程序以便可以输入几个产品然后显示。

(在“冷藏”中,产品的温度必须在“冷藏”出现时显示,而在“非冷藏”中,它会显示 pias)。

我希望我已经让自己理解了,我很抱歉这篇文章有点长。

提前致谢。

标签: java

解决方案


您必须更改和添加一些东西才能实现您想要的。

UML表明Producto该类没有temperatura字段,还将该字段重命名refrigeradonombreUML 中所述。所以删除它并修复构造函数:

public class Producto {

    public String nombre;
    public String cantidad;
    public String costo;
    public String codigo;


    public Producto(String nombre, String cantidad, String costo, String codigo) {
        this.nombre = nombre;
        this.cantidad = cantidad;
        this.costo = costo;
        this.codigo = codigo;
    }
}

修复相应的字段和构造函数调用RefrigeradoandNoRefrigerado并将它们的方法mostrardatos()和更改mostrardatosNo()为 required toString()。根据您的输出要求实现相应的toStirng()方法。

NoRefrigerado.java

public class NoRefrigerado extends Producto {

    public String pais;

    public NoRefrigerado(String pais, String refrigerado, String cantidad, String costo, String codigo) {
        super(refrigerado, cantidad, costo, codigo);
        this.pais = pais;
    }


    @Override
    public String toString(){
        return "\t\tProducto " + nombre + " - " + "Código: " + codigo + "\n" +
        "\t\tcosto: " + costo + " pesos" + "\n" +
        "\t\tcantidad: " + cantidad + "\n" +
        "\t\tpais: " + pais + "\n";

    }

}

冰箱.java

public class Refrigerado extends Producto {

    public String temperatura;

    public Refrigerado(String nombre, String cantidad, String costo, String codigo, String temperatura) {
        super(nombre, cantidad, costo, codigo);
        this.temperatura = temperatura;
    }

    @Override
    public String toString() {
        return "\t\tProducto " + nombre + " - " + "Código: " + codigo + "\n" +
        "\t\tcosto: " + costo + " pesos" + "\n" +
        "\t\tcantidad: " + cantidad  + "\n" +
        "\t\ttemperatura: " + temperatura + " grados centígrados"  + "\n";
    }
}

最后以以下方式实现 main() 以无限运行并仅在用户想要退出时退出,通过输入 3。此外,为了保存用户输入的产品,您可以保留一个列表并在任何时候添加它检测到产品。

让我们看一下主类Tienda.java

public class Tienda {

    private static List<Producto> products = new ArrayList<>();

    public static void main(String[] args) {
        while (true) {
            Scanner sc = new Scanner(System.in);

            String s = sc.nextLine();
            //String s = "1&Norefrigerado&3000&20000&230&EEUU";
            String[] line = s.split("&");
            int cod = Integer.parseInt(line[0]);
            int size = line.length;

            if (size > 1) {
                String nombre = line[1];
                String cantidad = line[2];
                String costo = line[3];
                String codigo = line[4];
                String temperatura = line[5];
                seleccionaropciones(cod, nombre, cantidad, costo, codigo, temperatura);
            } else {
                seleccionaropciones(cod, null, null, null, null, null);
            }
        }
    }

    public static void seleccionaropciones(int opc, String nombre, String cantidad, String costo, String codigo, String temperatura) {

        switch (opc) {
            case 1:
                if (nombre.equals("Refrigerado")) {
                    Refrigerado usu = new Refrigerado(nombre, cantidad, costo, codigo, temperatura);
                    products.add(usu);
                } else {
                    NoRefrigerado a = new NoRefrigerado(temperatura, nombre, cantidad, costo, codigo);
                    products.add(a);
                }
                break;
            case 2:
                System.out.println("***Inventario de productos***\n");
                for (Producto producto : products) {
                    System.out.println(producto);
                }
                break;

            case 3:
                System.out.println("Adios A todos");
                System.exit(0);
                break;

        }

    }

}

现在继续输入,您将获得所需的输出。


推荐阅读