Java 我的资源清册不会保存新对象,它只会重置为我启动的对象

Java 我的资源清册不会保存新对象,它只会重置为我启动的对象,java,arrays,inventory,Java,Arrays,Inventory,因此,我有一个任务,为一家汽车公司做一个小清单,为汽车保存代码、品牌、型号、年份和奖金,但当我尝试运行该程序时,它工作得很好,它会询问需要询问的内容和所有内容,问题是它不会保存我使用addCar方法(nuevoVehiculo())输入的新车我已经花了大约3个小时试图解决这个问题,但没有成功,任何帮助都将不胜感激 也很抱歉,代码中的一些内容是西班牙语,我来自拉丁美洲国家,所以西班牙语是我们要做的,关于它的任何问题,我可以翻译,如果必要的话 package javaapplication32;

因此,我有一个任务,为一家汽车公司做一个小清单,为汽车保存代码、品牌、型号、年份和奖金,但当我尝试运行该程序时,它工作得很好,它会询问需要询问的内容和所有内容,问题是它不会保存我使用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.
}
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