Ir ao conteúdo
  • Cadastre-se

Java Problema com ArrayList e loop


Visitante

Posts recomendados

Olá, estou com um problema de ArrayList, eu criei ele e tudo mais, porém na hora que vou executar ele cai num loop infinito e não funciona o break do switch case.

O programa tem um menu que exibe funções que podem ser realizadas. Eu executo e adiciono uma pessoa e fica em loop infinito, não vai para as outras funcionalidades, se puderem ajudar agradeço.

 

CLASSE DA HERANÇA:


package testepad;

public abstract class Pessoa {
    protected String nome;
    protected int telefone;
    protected String endereco;
    protected String sexo;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getTelefone() {
        return telefone;
    }

    public void setTelefone(int telefone) {
        this.telefone = telefone;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    @Override
    public String toString() {
        return "Pessoa{" + "nome = " + nome + ", telefone = " + telefone + ", endereco = " + endereco + ", sexo = " + sexo + '}';
    }
    
}

 

SUB CLASSES:


package testepad;

public class Juridica extends Pessoa{
    private String CNPJ;

    public Juridica() {
    }

    public String getCNPJ() {
        return CNPJ;
    }

    public void setCNPJ(String CNP) {
        this.CNPJ = CNPJ;
    }
    
}

package testepad;

public class Fisica extends Pessoa{
    private String CPF;

    public Fisica() {
    }
    
    public String getCPF() {
        return CPF;
    }

    public void setCPF(String CPF) {
        this.CPF = CPF;
    }

}

 

CLASSE PRINCIPAL: (Onde ocorre o erro)


package testepad;

import java.util.ArrayList;
import java.util.Scanner;

public class TestePAD {

    public static void main(String[] args) {
        
        ArrayList<Fisica> fisicas = new ArrayList<>();
        ArrayList<Juridica> juridicas = new ArrayList<>();
        int opcao = 0;
        Scanner ler = new Scanner(System.in);
        
        System.out.println("----------- MENU (PF = Pessoa Física / PJ = Pessoa Jurídica) -----------");
        System.out.println(" 1 - Adicionar PF ");
        System.out.println(" 2 - Adicionar PJ ");
        System.out.println(" 3 - Remover PF ");
        System.out.println(" 4 - Remover PJ ");
        System.out.println(" 5 - Alterar PF ");
        System.out.println(" 6 - Alterar PJ ");
        System.out.println(" 7 - Buscar PF ");
        System.out.println(" 8 - Buscar PJ ");
        System.out.println(" 9 - Exibir PF ");
        System.out.println(" 10 - Exibir PJ ");
        System.out.println(" 11 - Sair ");
        opcao = ler.nextInt();
        
        do{
            switch (opcao){
                case 1:
                    Fisica f = new Fisica();
                    System.out.println("Informe o nome da pessoa física: ");
                    f.setNome(ler.next());
                    System.out.println("Informe o telefone: ");
                    f.setTelefone(ler.nextInt());
                    System.out.println("Informe o endereço: ");
                    f.setEndereco(ler.next());
                    System.out.println("Informe o sexo: ");
                    f.setSexo(ler.next());
                    System.out.println("Informe o CPF: ");
                    f.setCPF(ler.next());
                    fisicas.add(f);
                    break;
                    
                case 2:
                    Juridica j = new Juridica();
                    System.out.println("Informe o nome da pessoa jurídica: ");
                    j.setNome(ler.next());
                    System.out.println("Informe o telefone: ");
                    j.setTelefone(ler.nextInt());
                    System.out.println("Informe o endereço: ");
                    j.setEndereco(ler.next());
                    System.out.println("Informe o sexo: ");
                    j.setSexo(ler.next());
                    System.out.println("Informe o CNPJ: ");
                    j.setCNPJ(ler.next());
                    juridicas.add(j);
                    break;
                    
                case 3:
                    fisicas.remove(0);
                    break;
                    
                case 4:
                    juridicas.remove(0);
                    break;
                    
                case 5:
                    System.out.println("Nome da pessoa física que deseja modificar: ");
                    String nome = ler.next();
                    for(int i=0;i<fisicas.size();i++){
                        if(fisicas.get(i).getNome().equals(nome)){
                            Fisica f1 = new Fisica();
                            System.out.println("Novo nome: ");
                            f1.setNome(ler.next());
                            System.out.println("Novo endereço: ");
                            f1.setEndereco(ler.next());
                            System.out.println("Novo telefone: ");
                            f1.setTelefone(ler.nextInt());
                            System.out.println("Novo sexo: ");
                            f1.setSexo(ler.next());
                            System.out.println("Novo CPF: ");
                            f1.setCPF(ler.next());
                        }
                    }
                    break;
                    
                case 6:
                    System.out.println("Nome da pessoa jurídica que deseja modificar: ");
                    nome = ler.next();
                    for(int i=0;i<juridicas.size();i++){
                        if(juridicas.get(i).getNome().equals(nome)){
                            Juridica j1 = new Juridica();
                            System.out.println("Novo nome: ");
                            j1.setNome(ler.next());
                            System.out.println("Novo endereço: ");
                            j1.setEndereco(ler.next());
                            System.out.println("Novo telefone: ");
                            j1.setTelefone(ler.nextInt());
                            System.out.println("Novo sexo: ");
                            j1.setSexo(ler.next());
                            System.out.println("Novo CPF: ");
                            j1.setCNPJ(ler.next());
                        }
                    }
                    break;
                    
                case 7:
                    System.out.println("Informe o nome da pessoa física para ser pesquisada: "); //OBS: PEDIA PARA PESQUISAR A PESSOA, MAS EU EXIBI também
                    nome = ler.nextLine();
                    for(int i=0;i<fisicas.size();i++){
                    if(fisicas.get(i).getNome().equals(nome)){
                        System.out.println("------- Pessoa encontrada! -------");
                        System.out.println(fisicas.get(i).getNome());
                        System.out.println(fisicas.get(i).getEndereco());
                        System.out.println(fisicas.get(i).getTelefone());
                        System.out.println(fisicas.get(i).getSexo());
                        System.out.println(fisicas.get(i).getCPF());
                    }
                }
                    break;
                    
                case 8:
                    System.out.println("Informe o nome da pessoa jurídica para ser pesquisada: "); //OBS: PEDIA PARA PESQUISAR A PESSOA, MAS EU EXIBI também
                    nome = ler.nextLine();
                    for(int i =0;i<juridicas.size();i++){
                        if(juridicas.get(i).getNome().equals(nome)){
                        System.out.println("------- Pessoa encontrada! -------");
                        System.out.println(juridicas.get(i).getNome());
                        System.out.println(juridicas.get(i).getEndereco());
                        System.out.println(juridicas.get(i).getTelefone());
                        System.out.println(juridicas.get(i).getSexo());
                        System.out.println(juridicas.get(i).getCNPJ());
                        }
                    }
                    break;
                    
                case 9:
                    System.out.println("------- PESSOA FÍSICA -------");
                    System.out.println(fisicas);
                    break;
                    
                case 10:
                    System.out.println("------- PESSOA JURÍDICA -------");
                    System.out.println(juridicas);
                    break;
                case 11:
                    break;
            }
        
        } while(opcao != 0);
        
    }
    
}

 

Capturar.PNG

Link para o comentário
Compartilhar em outros sites

Olá @Carlos Armando Moreira, como citado pelo @iHollyZinhO, a leitura da opção deve ser feita dentro do loop, como ela estava fora do laço, não era alterada ocasionando o loop infinito.

        do{

	    opcao = ler.nextInt(); //Colocar a leitura da opção do menu dentro do loop;

            switch (opcao){
                case 1:
                    Fisica f = new Fisica();
                    System.out.println("Informe o nome da pessoa física: ");
                    f.setNome(ler.next());
                    System.out.println("Informe o telefone: ");
                    f.setTelefone(ler.nextInt());
                    System.out.println("Informe o endereço: ");
                    f.setEndereco(ler.next());
                    System.out.println("Informe o sexo: ");
                    f.setSexo(ler.next());
                    System.out.println("Informe o CPF: ");
                    f.setCPF(ler.next());
                    fisicas.add(f);
                    break;
                    
                case 2:
                    Juridica j = new Juridica();
                    System.out.println("Informe o nome da pessoa jurídica: ");
                    j.setNome(ler.next());
                    System.out.println("Informe o telefone: ");
                    j.setTelefone(ler.nextInt());
                    System.out.println("Informe o endereço: ");
                    j.setEndereco(ler.next());
                    System.out.println("Informe o sexo: ");
                    j.setSexo(ler.next());
                    System.out.println("Informe o CNPJ: ");
                    j.setCNPJ(ler.next());
                    juridicas.add(j);
                    break;
                    
                case 3:
                    fisicas.remove(0);
                    break;
                    
                case 4:
                    juridicas.remove(0);
                    break;
                    
                case 5:
                    System.out.println("Nome da pessoa física que deseja modificar: ");
                    String nome = ler.next();
                    for(int i=0;i<fisicas.size();i++){
                        if(fisicas.get(i).getNome().equals(nome)){
                            Fisica f1 = new Fisica();
                            System.out.println("Novo nome: ");
                            f1.setNome(ler.next());
                            System.out.println("Novo endereço: ");
                            f1.setEndereco(ler.next());
                            System.out.println("Novo telefone: ");
                            f1.setTelefone(ler.nextInt());
                            System.out.println("Novo sexo: ");
                            f1.setSexo(ler.next());
                            System.out.println("Novo CPF: ");
                            f1.setCPF(ler.next());
                        }
                    }
                    break;
                    
                case 6:
                    System.out.println("Nome da pessoa jurídica que deseja modificar: ");
                    nome = ler.next();
                    for(int i=0;i<juridicas.size();i++){
                        if(juridicas.get(i).getNome().equals(nome)){
                            Juridica j1 = new Juridica();
                            System.out.println("Novo nome: ");
                            j1.setNome(ler.next());
                            System.out.println("Novo endereço: ");
                            j1.setEndereco(ler.next());
                            System.out.println("Novo telefone: ");
                            j1.setTelefone(ler.nextInt());
                            System.out.println("Novo sexo: ");
                            j1.setSexo(ler.next());
                            System.out.println("Novo CPF: ");
                            j1.setCNPJ(ler.next());
                        }
                    }
                    break;
                    
                case 7:
                    System.out.println("Informe o nome da pessoa física para ser pesquisada: "); //OBS: PEDIA PARA PESQUISAR A PESSOA, MAS EU EXIBI também
                    nome = ler.nextLine();
                    for(int i=0;i<fisicas.size();i++){
                    if(fisicas.get(i).getNome().equals(nome)){
                        System.out.println("------- Pessoa encontrada! -------");
                        System.out.println(fisicas.get(i).getNome());
                        System.out.println(fisicas.get(i).getEndereco());
                        System.out.println(fisicas.get(i).getTelefone());
                        System.out.println(fisicas.get(i).getSexo());
                        System.out.println(fisicas.get(i).getCPF());
                    }
                }
                    break;
                    
                case 8:
                    System.out.println("Informe o nome da pessoa jurídica para ser pesquisada: "); //OBS: PEDIA PARA PESQUISAR A PESSOA, MAS EU EXIBI também
                    nome = ler.nextLine();
                    for(int i =0;i<juridicas.size();i++){
                        if(juridicas.get(i).getNome().equals(nome)){
                        System.out.println("------- Pessoa encontrada! -------");
                        System.out.println(juridicas.get(i).getNome());
                        System.out.println(juridicas.get(i).getEndereco());
                        System.out.println(juridicas.get(i).getTelefone());
                        System.out.println(juridicas.get(i).getSexo());
                        System.out.println(juridicas.get(i).getCNPJ());
                        }
                    }
                    break;
                    
                case 9:
                    System.out.println("------- PESSOA FÍSICA -------");
                    System.out.println(fisicas);
                    break;
                    
                case 10:
                    System.out.println("------- PESSOA JURÍDICA -------");
                    System.out.println(juridicas);
                    break;
                case 11:
                    break;
            }
        
        } while(opcao != 0);

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!