Java 我的资源清册不会保存新对象,它只会重置为我启动的对象
因此,我有一个任务,为一家汽车公司做一个小清单,为汽车保存代码、品牌、型号、年份和奖金,但当我尝试运行该程序时,它工作得很好,它会询问需要询问的内容和所有内容,问题是它不会保存我使用addCar方法(nuevoVehiculo())输入的新车我已经花了大约3个小时试图解决这个问题,但没有成功,任何帮助都将不胜感激 也很抱歉,代码中的一些内容是西班牙语,我来自拉丁美洲国家,所以西班牙语是我们要做的,关于它的任何问题,我可以翻译,如果必要的话Java 我的资源清册不会保存新对象,它只会重置为我启动的对象,java,arrays,inventory,Java,Arrays,Inventory,因此,我有一个任务,为一家汽车公司做一个小清单,为汽车保存代码、品牌、型号、年份和奖金,但当我尝试运行该程序时,它工作得很好,它会询问需要询问的内容和所有内容,问题是它不会保存我使用addCar方法(nuevoVehiculo())输入的新车我已经花了大约3个小时试图解决这个问题,但没有成功,任何帮助都将不胜感激 也很抱歉,代码中的一些内容是西班牙语,我来自拉丁美洲国家,所以西班牙语是我们要做的,关于它的任何问题,我可以翻译,如果必要的话 package javaapplication32;
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.
}
PackageJavaApplication32;
导入javax.swing.JOptionPane;
/**
*
*@作者路易斯
*/
公共级芦丁{
静态车辆loteVehiculos[]=新车辆[5];//Crea arreglo con objeto。
静态文塔薰衣草[]=新文塔[10];
公共静态无效Inicializa(){
loteVehiculos[0]=新车(1,“丰田”,“雅力士”,2018年,21000年);//Se llena el primer vehiculos en el arreglo para empezar la lista。
loteVehiculos[1]=新车(2,“本田”、“思域”,2017年,18000);
for(int k=2;k-1){
int codigo=Integer.parseInt(JOptionPane.showInputDialog(“Digite el codigo del nuevo vehiculo”);
字符串marca=JOptionPane.showInputDialog(“Digite la marca del nuevo vehiculo”);
字符串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[Posicon]=新车辆(codigo、marca、modelo、anio、precio);
}否则{
showMessageDialog(null,“没有新车辆的广告”);
}
}//新汽车公司。
公共静态int BUSCAVEHICLO(int codigo){
int-indice=-1;
for(int k=0;k=0){
loteVehiculos[posicion].codigo=0;
}否则{
showMessageDialog(null,“无车辆信息”);
}
}//最后一辆汽车。
公共静态无效列表Avehiculos(){
for(int i=0;i0){
System.out.println(loteVehiculos[i]);
}
}
}//车辆清单。
公共静态无效InicioVentas(){
拉文塔[0]=新文塔(112345,1,“2018年阿布里尔20号”,15000);
拉文塔[1]=新文塔(467890,2,“2018年10月10日”,24000);
对于(int g=2;g
这是因为每次运行方法menuVehiculos
时,它都会执行以下操作:Rutinas.Inicializa()代码>
要解决这个问题,可以从另一个类调用初始化。例如:
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.
我试图从菜单中删除Rutinas.Inicializa()
,但在我键入新车的代码(codigo)后,它显示了一个错误,即线程“main”java.lang.NullPointerException中的异常。要么不使用静态变量和方法,要么使用静态块初始化数组。另一个选择是让另一个类调用一个方法来添加初始车辆。很抱歉,这么麻烦,但是使用静态块初始化数组意味着什么,我对编程非常陌生,因为我的代码很简单,虽然我尝试去掉了代码的每个静态部分,但它在菜单上显示了一个错误,也就是说,即使没有任何静态变量或方法,也不能从静态内容引用非静态方法NameofMethod()
。我在写了之后意识到,这可能是您不熟悉的主题。我添加了一个我认为很简单的修复,可能是e