Duvida sobre loop de vetor

Pessoal sou novato na programcao java.
Estou tentando criar um menu e caso selecione o 1
eu consiga fazer o cadastro o problema é que quando peço para verificar se esta nulo ele mostra que tem o numero 5 que seria o tamanho do vetor.
Teria como eu deixar o vetor dinamico crescer conforme eu cadastrar pois vou colocar a opcao cadastrar novamente e como eu posso fazer a verificação se esta nulo quando na primeira passagem nao tera valor pois ele diz que tem valor sem tem dado nenhum valor


import java.text.DecimalFormat;
import java.util.Scanner;
import java.util.Vector;


public class Teste {

    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat("#");
         Passeio[] vp = new Passeio[5]; 
        // Passeio cp1 = new Passeio();
         Carga[]   vc = new Carga[5];
         
        Scanner entrada = new Scanner(System.in);
        int existe;
        String simNao = "S";
        String validaPlaca;
        int opcao = 0;
        int count = 0;
        int i = 0;
        String v_num = "S";
       
        while (opcao != 7) {  
           
        if(opcao != 7){
            
//        System.out.print("\n##-Sistema de Gestao de Veiculos Menu - Principal-##\n");
//        System.out.print("|---------------------------------------------------|\n");
//        System.out.print("| Opção 1 - Cadastrar Veiculo de Passeio            |\n");
//        System.out.print("| Opção 2 - Cadastrar Veiculo de Carga              |\n");
//        System.out.print("| Opção 3 - Imprimir todos os Veiculos de Passeio   |\n");
//        System.out.print("| Opção 4 - Imprimir todos os Veiculos de Carga     |\n");
//        System.out.print("| Opção 5 - Imprimir Veiculos de Passeio pela placa |\n");
//        System.out.print("| Opção 6 - Imprimir Veiculos de Carga pela placa   |\n");
//        System.out.print("| Opção 7 - Sair do Sistema                         |\n");
//        System.out.print("|---------------------------------------------------|\n");
        System.out.print("\nDigite uma opção: ");
        
        opcao = entrada.nextInt();
        
        switch (opcao) {
          
            case  1:
              
                System.out.print("\nOpcao Cadastrar Veiculo de Passeio Selecionado...\n");  
                 vp[i] = new Passeio();
                
                System.out.println("\nInforme a Placa");
                validaPlaca = entrada.next();
                      
               for (Passeio passeio : vp) {
                   if(passeio != null){
				      System.out.println("teste nao nulo");
					}else{
                       System.out.println("testa nulo");
                   }
                 
        }
                 
                i += 1;
                break;
             //   System.out.println("\nInforme a qtde rodas");
             //   vp[i].setQtdRodas(entrada.nextInt());
             //   System.out.println("\nInforme a Velocidade Maxima");
             //   vp[i].setVelocMax(entrada.nextInt());
             //   System.out.println("\nInforme a qtde Passageiros");
             //   vp[i].setQtdPassageiros(entrada.nextInt());
                
   
            case  2:
                System.out.print("\nOpcao Cadastrar Veiculo de Carga Selecionado\n");
                break;

            case  3:
                System.out.print("\nOpcao Imprimir todos os Veiculos de Passeio Selecionado\n");
                break;
             case 4:
                System.out.print("\nOpcao Imprimir todos os Veiculos de Carga Selecionado\n");
                break;
            case  5:
                System.out.print("\nOpcao Imprimir Veiculo de Passeio pela Placa Selecionado\n");
                
                if (vp.length == 0) {
                        System.out.println("Não há placas cadastradas.");
                } else {
                  for (Passeio passeio : vp) {
                     System.out.println(passeio.getPlaca());
                   }
                }
                
                break;
                
                
                
                
            case  6:
                System.out.print("\nOpcao Imprimir Veiculo de Carga pela Placa Selecionado\n");
       //         listaVeiculo("c");
            case 7:
                  System.out.print("\nEncerrando Sistema....Ate logo!");
                  
                  entrada.close(); 
                  break;
                  
            default:
                System.out.print("\nOpcao Invalida...!");
                break;
             }
         }
        i += 1;

    }
        
      
      

    }
    

  
}

Não. Em Java, arrays têm tamanho fixo, e o único jeito de mudar é criando outro array.

Se a ideia é que seja dinâmico e precise crescer conforme a necessidade, melhor usar List.

Ou seja, em vez de:

Passeio[] vp = new Passeio[5];

Faça:

List<Passeio> vp = new ArrayList<>();

E para adicionar um novo elemento:

Passeio p = new Passeio();
// setar os dados do objeto p, etc

// adiciona na lista
vp.add(p);

Assim, a própria lista se encarrega de aumentar o tamanho conforme necessário. E no for vc não precisa mais ficar verificando se é nulo.

1 curtida