Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Crie uma classe Contato que possui dois atributos: nome e email do tipo String. Crie outra classe, chamada Agenda, que possui um atributo contatos do tipo vetor de Contato - Exercícios Resolvidos de JavaQuantidade de visualizações: 33934 vezes |
Exercício Resolvido de Java - Crie uma classe Contato que possui dois atributos: nome e email do tipo String. Crie outra classe, chamada Agenda, que possui um atributo contatos do tipo vetor de Contato Pergunta/Tarefa: Crie uma classe Contato que possui dois atributos: nome e email do tipo String. Crie outra classe, chamada Agenda, que possui um atributo contatos do tipo vetor de Contato. A classe Agenda deve conter um método para adicionar um novo contato em uma posição vazia do vetor, outro método para buscar um contato (retorna uma instância de Contato) através do nome e, por fim, um método para excluir um contato através do nome. Veja um print deste exercício em execução: ![]() Resposta/Solução: A resolução deste exercício sobre Programação Orientada a Objetos em Java é um pouco mais demorada que as demais, pois temos que criar um menu de opções. Note que temos que informar também o tamanho do vetor de objetos da classe Contato, ou seja, a quantidade de contatos de poderão ser cadastrados na agenda. Vamos começar com o código da classe Contato: Código para a classe Contato.java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; public class Contato { // atributos da classe Contato String nome; String email; } Agora o código para a classe Agenda.java, que contém um vetor de objetos da classe Contato: Código para Agenda.java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; public class Agenda { // vetor de contatos int quantContatos = 2; Contato contatos[] = new Contato[quantContatos]; public void adicionarNovoContato(Contato c){ boolean sucesso = false; // a operação obteve sucesso? // procuramos uma posição vazia for(int i = 0; i < quantContatos; i++){ if(contatos[i] == null){ // encontramos uma posição vazia contatos[i] = c; sucesso = true; break; } } if(sucesso){ System.out.println("\nContato cadastrado com sucesso.\n"); } else{ System.out.println("\nErro: Lista de contatos cheia.\n"); } } // permite que permite pesquisar e retornar um contato public Contato pesquisarContato(String nome){ Contato contato = null; // varre o vetor de contatos for(int i = 0; i < contatos.length; i++){ // o contato foi encontrado? if((contatos[i] != null) && (contatos[i].nome.equals(nome))){ contato = contatos[i]; // retorna o contato break; } } return contato; } // permite que permite pesquisar e excluir um contato public void excluirContato(String nome){ Contato contato = null; boolean excluido = false; // varre o vetor de contatos for(int i = 0; i < contatos.length; i++){ // o contato foi encontrado? if((contatos[i] != null) && (contatos[i].nome.equals(nome))){ contatos[i] = null; // exclui o contato System.out.println("\nContato excluído com sucesso.\n"); excluido = true; break; } } if(!excluido){ System.out.println("\nContato não encontrado.\n"); } } } E aqui está o código completo para a classe principal, com comentários, que cria um objeto da classe Agenda e oferece o menu de opções para o gerenciamento dos contatos: Código para Principal.java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String args[]){ // vamos efetuar a leitura usando um objeto da // classe Scanner Scanner entrada = new Scanner(System.in); String nome, email; // dados temporários Contato c; // criamos um novo objeto da classe Agenda Agenda agenda = new Agenda(); // um laço while infinito para exibir o menu while(true){ System.out.println("1. Cadastrar Novo Contato"); System.out.println("2. Pesquisar Contato"); System.out.println("3. Excluir Contato"); System.out.println("4. Sair"); System.out.print("Sua opção: "); int opcao = Integer.parseInt(entrada.nextLine()); switch(opcao){ case 1: // cadastrar novo contato System.out.print("\nNome: "); nome = entrada.nextLine(); System.out.print("E-Mail: "); email = entrada.nextLine(); // cria um novo objeto da classe Contato c = new Contato(); c.nome = nome; c.email = email; // e gravamos o novo contato agenda.adicionarNovoContato(c); break; case 2: // pesquisar um contato System.out.print("\nInforme o Nome: "); nome = entrada.nextLine(); // pesquisa o contato c = agenda.pesquisarContato(nome); if(c == null){ System.out.println("\nContato não encontrado.\n"); } else{ System.out.println("Contato encontrado:\nNome: " + c.nome + "; E-Mail: " + c.email + "\n"); } break; case 3: // exclui um contato System.out.print("\nInforme o Nome: "); nome = entrada.nextLine(); // exclui o contato agenda.excluirContato(nome); break; case 4: // fecha o programa System.exit(0); } } } } |
![]() |
Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como testar se uma matriz é uma matriz identidade usando JavaQuantidade de visualizações: 918 vezes |
Seja M uma matriz quadrada de ordem n. A matriz M é chamada de Matriz Identidade de ordem n (indicada por In) quando os elementos da diagonal principal são todos iguais a 1 e os elementos restantes são iguais a zero. Para melhor entendimento, veja a imagem de uma matriz identidade de ordem 3, ou seja, três linhas e três colunas: ![]() Veja um código Java completo no qual nós declaramos uma matriz quadrada de ordem 3, pedimos para o usuário informar os valores de seus elementos e no final informamos se a matriz é uma matriz identidade ou não: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ int n = 3; // ordem da matriz quadrada int matriz[][] = new int[n][n]; // matriz quadrada // para efetuar a leitura do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar os elementos da matriz for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++) { System.out.print("Elemento na linha " + (i + 1) + " e coluna " + (j + 1) + ": "); matriz[i][j] = Integer.parseInt(entrada.nextLine()); } } // agora verificamos se a matriz é uma matriz identidade boolean identidade = true; for(int linha = 0; linha < n; linha++){ for(int coluna = 0; coluna < n; coluna++){ if(matriz[linha][coluna] != 1 && matriz[coluna][linha] != 0){ identidade = false; break; } } } // agora mostramos a matriz lida System.out.printf("\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.printf("%d ", matriz[i][j]); } System.out.printf("\n"); } if (identidade){ System.out.printf("\nA matriz informada é uma matriz identidade.\n"); } else{ System.out.printf("\nA matriz informada não é uma matriz identidade.\n"); } } } Ao executar este código Java nós teremos o seguinte resultado: Elemento na linha 1 e coluna 1: 1 Elemento na linha 1 e coluna 2: 0 Elemento na linha 1 e coluna 3: 0 Elemento na linha 2 e coluna 1: 0 Elemento na linha 2 e coluna 2: 1 Elemento na linha 2 e coluna 3: 0 Elemento na linha 3 e coluna 1: 0 Elemento na linha 3 e coluna 2: 0 Elemento na linha 3 e coluna 3: 1 1 0 0 0 1 0 0 0 1 A matriz informada é uma matriz identidade. |
Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca |
Estruturas de dados em Java - Como obter a quantidade de nós em uma árvore binária usando JavaQuantidade de visualizações: 2834 vezes |
Em exemplos dessa seção nós vimos como criar árvores binárias e árvores binárias de busca em Java e como pesquisar ou fazer a sua travessia, visitando cada um dos nós. Nesta dica mostrarei como contar os nós da árvore usando um método recursivo. Veja:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // método que permite obter a quantidade de nós na árvore int quantNosArvore(){ // chama a versão recursiva return quantNosArvore(raiz); } int quantNosArvore(No no){ if(no == null){ // condição de parada return 0; } else{ return (quantNosArvore(no.getEsquerdo()) + quantNosArvore(no.getDireito()) + 1); } } Este método faz parte da classe ArvoreBinariaBusca.java. Veja agora como chamá-lo a partir da classe principal, ou seja, a classe de teste: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arvore_binaria; import java.util.Scanner; public class ArvoreBinariaTeste { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos criar um novo objeto da classe ArvoreBinariaBusca ArvoreBinariaBusca arvore = new ArvoreBinariaBusca(); // vamos inserir 5 valores na árvore for(int i = 0; i < 5; i++){ System.out.print("Informe um valor inteiro: "); int valor = Integer.parseInt(entrada.nextLine()); // vamos inserir o nó e verificar o sucesso da operação if(!arvore.inserir(valor)){ System.out.println("Não foi possível inserir." + " Um elemento já contém este valor."); } } // vamos exibir a quantidade de nós na árvore System.out.println("\nA árvore possui: " + arvore.quantNosArvore() + " nós.\n"); System.out.println("\n"); } } Ao executar este código teremos o seguinte resultado: Informe um valor inteiro: 5 Informe um valor inteiro: 2 Informe um valor inteiro: 8 Informe um valor inteiro: 7 Informe um valor inteiro: 31 A árvore possui: 5 nós. |
Java ::: Coleções (Collections) ::: Set (Conjunto) |
Como usar objetos da interface Set para representar a união de dois ou mais conjuntos na linguagem JavaQuantidade de visualizações: 4495 vezes |
Na teoria dos conjuntos, a união de dois ou mais conjuntos é o conjunto dos elementos que pertencem a pelo menos um destes conjuntos. Assim, seja A = {2, 5, 8, 19, 30} e B = {2, 3, 1, 30}. A união desses dois conjuntos é C = {1, 2, 3, 5, 8, 19, 30}. Na programação Java podemos representar a união de dois conjuntos usando objetos da interface Set e qualquer uma de suas implementações. Para este exemplo vou usar a classe TreeSet, que permite a ordenação dos elementos. Veja o código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class Estudos{ public static void main(String[] args) { // primeiro conjunto Set<Integer> conjuntoA = new TreeSet<>(); conjuntoA.add(2); conjuntoA.add(5); conjuntoA.add(8); conjuntoA.add(19); conjuntoA.add(30); // segundo conjunto Set<Integer> conjuntoB = new TreeSet<>(); conjuntoB.add(2); conjuntoB.add(3); conjuntoB.add(1); conjuntoB.add(30); // vamos obter a união dos dois conjuntos Set<Integer> conjuntoC = uniao(conjuntoA, conjuntoB); // vamos exibir os elementos no conjunto C Iterator iterator = conjuntoC.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } // método genérico que permite obter a união de dois conjuntos public static <T> Set<T> uniao(Set<T> conjA, Set<T> conjB){ // Primeiro o conjunto C recebe todos os elementos do conjunto A Set<T> conjC = new TreeSet<>(conjA); // Em seguida o conjunto C recebe todos os elementos do conjunto B. // Como um Set não aceita elementos duplicados, apenas os elementos // de B que ainda não estejam no conjunto C serão aceitos conjC.addAll(conjB); return conjC; } } Ao executarmos este código teremos o seguinte resultado: 1 2 3 5 8 19 30 |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Python - Como criar arrays (vetores e matrizes) usando o objeto ndarray da biblioteca Numpy do Python |
Códigos Fonte |
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |