java - 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)。
我希望我已经让自己理解了,我很抱歉这篇文章有点长。
提前致谢。
解决方案
您必须更改和添加一些东西才能实现您想要的。
您UML
表明Producto
该类没有temperatura
字段,还将该字段重命名refrigerado
为nombre
UML 中所述。所以删除它并修复构造函数:
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;
}
}
修复相应的字段和构造函数调用Refrigerado
andNoRefrigerado
并将它们的方法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;
}
}
}
现在继续输入,您将获得所需的输出。
推荐阅读
- php - 如何使用 Jira Rest Api 更改自定义配置文件字段?
- npm - 将环境变量传递给调用节点脚本的 npm 脚本?
- mysql - 创建 MySQL 表时出现编程错误
- php - 如何替换phpMailler发送的邮件的发件人
- javascript - 显示以前上传的文件或图像
- r - 如何在R中查找和求和多个列
- algorithm - UndefVarError st 未定义。我的代码中没有名为 st 的变量
- laravel - Laravel:我如何修复这个特征(带有属性)在创建模型时也可以工作?
- css - 语义 UI,grid class="ui grid celled padded" 的列的 div 子项将不会滚动 - [更新]
- arrays - 如何解决此“未处理的拒绝类型错误:res.xls 不是函数”