ArrayList

Pessoal, como faço para colocar as variáveis lidas de um usuário dentro de um arraylist?

  • Crie uma classe para representar esses dados do usuário.
  • Nessa classe, defina os atributos que irá representar cada dado.
  • Com a classe criada, você conseguirá criar um ArrayList tipado para essa classe. Ex.: List<SuaClasse> lista = new ArrayList<SuaClasse>();

Isso já está feito, mas o problema é que não sei como faço para por os atributos já lidos dentro do arraylist

Vamos supor que a classe que você tem criada seja assim:

public class DadosUsuario {
    private String valorA;
    private String valorB;

    // getters and setters
}

Veja exemplo para incluir na lista:

String valorLidoA = // recebe valor informado do usuário
String valorLidoB = // recebe valor informado do usuário

// Cria a lista
List<DadosUsuario> listaDados = new ArrayList<DadosUsuario>();

// Cria um objeto com os dados informados
DadosUsuario dado = new DadosUsuario();
dado.setValorA(valorLidoA);
dado.setValorB(valorLidoB);

// Adiciona o objeto com os dados na lista
listaDados.add(dado); 

Certo, olha esse trecho do código. Não consigo imprimir os atributos da classe Passagem.

case 1:
    passagem.setValor(1000);
    System.out.println("Confirmar? S/N");
    String confirma1 = s.next();
    
    if("S".equals(confirma1) || "s".equals(confirma1)) {
        passagem.Imprimir();
        
        //Supostamente adiciona o objeto com os dados na lista
        passagens.add(passagem);
    }

Posta o código do método Imprimir.

public void Imprimir() {
    System.out.println("");
    System.out.println(" -------- Dados da passagem ----------------- ");
    System.out.println(" Nome                : " + passageiro.getNome());
    System.out.println(" CPF                 : " + passageiro.getCpf());
    System.out.println(" Dia da passagem     : " + data.dia+"/"+data.mes+"/"+data.ano );
    System.out.println(" Horario da passagem : " + data.hora+":00:00" );
    System.out.println(" Destino             : " + this.getDestino());
    System.out.println(" Origem              : " + this.getOrigem());
    System.out.println(" Valor               : " + this.getValor());
    System.out.println(" ----------------------------------------- ");
    System.out.println("");
}

Quando você diz que não consegue imprimir. No código que você mandou, a execução cai no case 1 do switch? Chega a entrar no IF? Dá algum erro?

Erro nenhum, ao final eu testei um print e sai isso " [agencia_viagem.Passagem@14991ad]"

mas ai no final, você deve está dando um system.out.println na lista, e não na passagem.

Exatamente isso:
for(Passagem p:passagens )
{
System.out.println(passagens);
}
Já testei sem o for tbm

Altere o seu for para:

for(Passagem p : passagens) {
    System.out.println(p.Imprimir());
}

Erro" ‘void’ type not allowed here"

Mals cara, tem que ficar fora do System.out:

for(Passagem p : passagens) {
    p.Imprimir();
}

Obrigado, velho! Se não for abusar demais, se eu colocar o “passagens.add(passagem);” no outro case por exemplo, ele sobrescreve?

Sobrescreve não, irá apenas adicionar um outro item na lista.

Ótimo. Uma coisa, quando eu seleciono o “case 1” o programa sai dele e vai para o “case 2” ao invés de pulá-lo.

O programa apenas vai para o case 2, caso tenha entrado no case 1 e esse não tenha um break definido.

Verdade, mas eu queria que ao final do “case 1” o programa voltasse para o menu principal:

void Menu() {
    System.out.println("");
    System.out.println(" Qual operacao deseja realizar ?");
    System.out.println(" (1)Compra de passagem aerea ");
    System.out.println(" (2)Compra passagem de onibus ");
    System.out.println(" (3)Cancelamento ");
    System.out.println(" (4)Sair ");
    System.out.print("   Operacao: ");
}

Use a estrutura de repetição do ... while, assim:

String opcao = "";

do {
    // Apresenta o menu
    
    opcao = // lê a opção do usuario
    
    // switch com as ações das opções disponíveis
    
    // ao final da execução do switch, automaticamente, o programa voltará para o começo do laço
} while(opcao != "4"); // se opcao for igual a 4, a condição será falsa e sairá do laço