我的库存不保存新对象,它只是重置为我启动的对象
My Inventory does not save a new object, it just resets to the ones I initiated with
所以我有一项任务是为一家汽车公司做一些库存,这会保存汽车的代码、品牌、型号、年份和奖品,但是当我尝试 运行 程序时它起作用了太好了,它会询问需要询问的内容以及所有问题,问题是它不会保存我使用 addCar 方法 (nuevoVehiculo()) 输入的新车,我已经尝试了大约 3 个小时,但是没有成功,任何帮助将不胜感激。
也很抱歉,代码中的某些内容是西班牙语,我来自拉丁美洲国家,所以我们使用西班牙语,如有任何问题,我可以在必要时进行翻译。
package javaapplication32;
import javax.swing.JOptionPane;
/**
*
* @author Luis
*/
public class Rutinas {
static Vehiculo loteVehiculos[] = new Vehiculo[5]; //Crea arreglo con objeto.
static Venta laVenta[] = new Venta[10];
public static void Inicializa() {
loteVehiculos[0] = new Vehiculo(1, "Toyota", "Yaris", 2018, 21000);//Se llena el primer vehiculo en el arreglo para empezar la lista.
loteVehiculos[1] = new Vehiculo(2, "Honda", "Civic", 2017, 18000);
for (int k = 2; k < loteVehiculos.length; k++) {
loteVehiculos[k] = new Vehiculo();//Se crean los otros vehiculos sin informacion.
}
}//Fin Inicializa.
public static int posicionVacia() {
int indice = -1;
for (int r = 0; r < loteVehiculos.length; r++) {
if (loteVehiculos[r].codigo == 0) {
indice = r;
break;
}
}
return indice;
}//Fin Posicion Vacia.
public static void nuevoVehiculo() { //Para llenar la informacion de los nuevos vehiculos.
int posicion = posicionVacia();
if (posicion > -1) {
int codigo = Integer.parseInt(JOptionPane.showInputDialog("Digite el codigo del nuevo vehiculo."));
String marca = JOptionPane.showInputDialog("Digite la marca del nuevo vehiculo");
String modelo = JOptionPane.showInputDialog("Digite el modelo del nuevo vehiculo");
int anio = Integer.parseInt(JOptionPane.showInputDialog("Digite el año del nuevo vehiculo"));
float precio = Float.parseFloat(JOptionPane.showInputDialog("Digite el precio del nuevo vehiculo en dolares"));
loteVehiculos[posicion] = new Vehiculo(codigo, marca, modelo, anio, precio);
} else {
JOptionPane.showMessageDialog(null, "No hay espacio para un nuevo vehiculo");
}
}//Fin Nuevo Vehiculo.
public static int buscaVehiculo(int codigo) {
int indice = -1;
for (int k = 0; k < loteVehiculos.length; k++) {
if (loteVehiculos[k].codigo == codigo) {
indice = k;
break;
}
}
return indice;
}//Fin Busca Vehiculo.
public static void eliminarVehiculo() {
int vehiculo = Integer.parseInt(JOptionPane.showInputDialog("Digite el codigo del vehiculo que desea borrar."));
int posicion = buscaVehiculo(vehiculo);
if (posicion >= 0) {
loteVehiculos[posicion].codigo = 0;
} else {
JOptionPane.showMessageDialog(null, "No se encuentra el vehiculo. ");
}
}//Fin Eliminar Vehiculo.
public static void listaVehiculos() {
for (int i = 0; i < loteVehiculos.length; i++) {
if (loteVehiculos[i].codigo > 0) {
System.out.println(loteVehiculos[i]);
}
}
}//Fin Lista de Vehiculos.
public static void InicioVentas() {
laVenta[0] = new Venta(1, 12345, 1, "20 de Abril 2018", 15000);
laVenta[1] = new Venta(4, 67890, 2, "10 de Abril 2018", 24000);
for (int g = 2; g < laVenta.length; g++) {
laVenta[g] = new Venta(); //Se crean las otras ventas.
}
}
public static void agregarVenta() {
}
public static void menuVehiculos() {
Rutinas.Inicializa();
int n = Integer.parseInt(JOptionPane.showInputDialog("Digite \n1.Ingresar nuevo vehiculo. \n2.Lista actual de vehiculos. \n3.Eliminar vehiculo. \n4.Salir "));
switch (n) {
case 1:
Rutinas.nuevoVehiculo();
Rutinas.menuVehiculos();
break;
case 2:
Rutinas.listaVehiculos();
Rutinas.menuVehiculos();
break;
case 3:
Rutinas.eliminarVehiculo();
Rutinas.menuVehiculos();
break;
case 4:
JOptionPane.showMessageDialog(null, "Gracias.");
break;
}
}//Fin Menu.
}
这是因为每次 运行 方法 menuVehiculos
它都会执行此操作:Rutinas.Inicializa();
要解决此问题,您可以从另一个 class 调用初始化。例如:
public class Main {
public static void main(String[] args) {
Rutinas.Inicializa();
Rutinas.menuVehiculos();
}
}
那么你的方法menuVehiculos
不需要做任何初始化。
public static void menuVehiculos() {
int n = Integer.parseInt(JOptionPane.showInputDialog("Digite \n1.Ingresar nuevo vehiculo. \n2.Lista actual de vehiculos. \n3.Eliminar vehiculo. \n4.Salir "));
switch (n) {
case 1:
Rutinas.nuevoVehiculo();
Rutinas.menuVehiculos();
break;
case 2:
Rutinas.listaVehiculos();
Rutinas.menuVehiculos();
break;
case 3:
Rutinas.eliminarVehiculo();
Rutinas.menuVehiculos();
break;
case 4:
JOptionPane.showMessageDialog(null, "Gracias.");
break;
}
}//Fin Menu.
所以我有一项任务是为一家汽车公司做一些库存,这会保存汽车的代码、品牌、型号、年份和奖品,但是当我尝试 运行 程序时它起作用了太好了,它会询问需要询问的内容以及所有问题,问题是它不会保存我使用 addCar 方法 (nuevoVehiculo()) 输入的新车,我已经尝试了大约 3 个小时,但是没有成功,任何帮助将不胜感激。
也很抱歉,代码中的某些内容是西班牙语,我来自拉丁美洲国家,所以我们使用西班牙语,如有任何问题,我可以在必要时进行翻译。
package javaapplication32;
import javax.swing.JOptionPane;
/**
*
* @author Luis
*/
public class Rutinas {
static Vehiculo loteVehiculos[] = new Vehiculo[5]; //Crea arreglo con objeto.
static Venta laVenta[] = new Venta[10];
public static void Inicializa() {
loteVehiculos[0] = new Vehiculo(1, "Toyota", "Yaris", 2018, 21000);//Se llena el primer vehiculo en el arreglo para empezar la lista.
loteVehiculos[1] = new Vehiculo(2, "Honda", "Civic", 2017, 18000);
for (int k = 2; k < loteVehiculos.length; k++) {
loteVehiculos[k] = new Vehiculo();//Se crean los otros vehiculos sin informacion.
}
}//Fin Inicializa.
public static int posicionVacia() {
int indice = -1;
for (int r = 0; r < loteVehiculos.length; r++) {
if (loteVehiculos[r].codigo == 0) {
indice = r;
break;
}
}
return indice;
}//Fin Posicion Vacia.
public static void nuevoVehiculo() { //Para llenar la informacion de los nuevos vehiculos.
int posicion = posicionVacia();
if (posicion > -1) {
int codigo = Integer.parseInt(JOptionPane.showInputDialog("Digite el codigo del nuevo vehiculo."));
String marca = JOptionPane.showInputDialog("Digite la marca del nuevo vehiculo");
String modelo = JOptionPane.showInputDialog("Digite el modelo del nuevo vehiculo");
int anio = Integer.parseInt(JOptionPane.showInputDialog("Digite el año del nuevo vehiculo"));
float precio = Float.parseFloat(JOptionPane.showInputDialog("Digite el precio del nuevo vehiculo en dolares"));
loteVehiculos[posicion] = new Vehiculo(codigo, marca, modelo, anio, precio);
} else {
JOptionPane.showMessageDialog(null, "No hay espacio para un nuevo vehiculo");
}
}//Fin Nuevo Vehiculo.
public static int buscaVehiculo(int codigo) {
int indice = -1;
for (int k = 0; k < loteVehiculos.length; k++) {
if (loteVehiculos[k].codigo == codigo) {
indice = k;
break;
}
}
return indice;
}//Fin Busca Vehiculo.
public static void eliminarVehiculo() {
int vehiculo = Integer.parseInt(JOptionPane.showInputDialog("Digite el codigo del vehiculo que desea borrar."));
int posicion = buscaVehiculo(vehiculo);
if (posicion >= 0) {
loteVehiculos[posicion].codigo = 0;
} else {
JOptionPane.showMessageDialog(null, "No se encuentra el vehiculo. ");
}
}//Fin Eliminar Vehiculo.
public static void listaVehiculos() {
for (int i = 0; i < loteVehiculos.length; i++) {
if (loteVehiculos[i].codigo > 0) {
System.out.println(loteVehiculos[i]);
}
}
}//Fin Lista de Vehiculos.
public static void InicioVentas() {
laVenta[0] = new Venta(1, 12345, 1, "20 de Abril 2018", 15000);
laVenta[1] = new Venta(4, 67890, 2, "10 de Abril 2018", 24000);
for (int g = 2; g < laVenta.length; g++) {
laVenta[g] = new Venta(); //Se crean las otras ventas.
}
}
public static void agregarVenta() {
}
public static void menuVehiculos() {
Rutinas.Inicializa();
int n = Integer.parseInt(JOptionPane.showInputDialog("Digite \n1.Ingresar nuevo vehiculo. \n2.Lista actual de vehiculos. \n3.Eliminar vehiculo. \n4.Salir "));
switch (n) {
case 1:
Rutinas.nuevoVehiculo();
Rutinas.menuVehiculos();
break;
case 2:
Rutinas.listaVehiculos();
Rutinas.menuVehiculos();
break;
case 3:
Rutinas.eliminarVehiculo();
Rutinas.menuVehiculos();
break;
case 4:
JOptionPane.showMessageDialog(null, "Gracias.");
break;
}
}//Fin Menu.
}
这是因为每次 运行 方法 menuVehiculos
它都会执行此操作:Rutinas.Inicializa();
要解决此问题,您可以从另一个 class 调用初始化。例如:
public class Main {
public static void main(String[] args) {
Rutinas.Inicializa();
Rutinas.menuVehiculos();
}
}
那么你的方法menuVehiculos
不需要做任何初始化。
public static void menuVehiculos() {
int n = Integer.parseInt(JOptionPane.showInputDialog("Digite \n1.Ingresar nuevo vehiculo. \n2.Lista actual de vehiculos. \n3.Eliminar vehiculo. \n4.Salir "));
switch (n) {
case 1:
Rutinas.nuevoVehiculo();
Rutinas.menuVehiculos();
break;
case 2:
Rutinas.listaVehiculos();
Rutinas.menuVehiculos();
break;
case 3:
Rutinas.eliminarVehiculo();
Rutinas.menuVehiculos();
break;
case 4:
JOptionPane.showMessageDialog(null, "Gracias.");
break;
}
}//Fin Menu.