Você está aqui: Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como testar se uma matriz é simétrica em JavaQuantidade de visualizações: 854 vezes |
Uma matriz simétrica é uma matriz que é igual à sua transposta. Para que esta definição faça sentido, apenas podemos considerar matrizes que são quadradas, ou seja, mesma quantidade de linhas e colunas. De forma mais precisa, se A=[aij] é uma matriz de ordem n x n, nós dizemos que A é simétrica quando A=At. 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 simétrica: ---------------------------------------------------------------------- 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 é simétrica boolean simetrica = true; for (int i = 0; (i < n) && (simetrica); i++) { for (int j = 0; (j < i) && (simetrica); j++) { // os elementos em posicoes simetricas sao iguais? if (matriz[i][j] != matriz[j][i]){ simetrica = false; } } } // 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 (simetrica){ System.out.printf("\nA matriz informada é uma matriz simétrica.\n"); } else{ System.out.printf("\nA matriz informada não é uma matriz simétrica.\n"); } } } Ao executar este código Java nós teremos o seguinte resultado: Elemento na linha 1 e coluna 1: 5 Elemento na linha 1 e coluna 2: 1 Elemento na linha 1 e coluna 3: 2 Elemento na linha 2 e coluna 1: 1 Elemento na linha 2 e coluna 2: 6 Elemento na linha 2 e coluna 3: 3 Elemento na linha 3 e coluna 1: 2 Elemento na linha 3 e coluna 2: 3 Elemento na linha 3 e coluna 3: 8 5 1 2 1 6 3 2 3 8 A matriz informada é uma matriz simétrica. |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Projetos Java Programação Orientada a Objetos - Exemplos Java |
Sistema para Biblioteca usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão consoleQuantidade de visualizações: 14308 vezes |
Sistema para Gestão de Biblioteca usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão console Controle de Biblioteca - Sobre este projeto Java Nesta dica apresento a idéia de um Controle de Gestão de Biblioteca em Java usando Programação Orientada a Objetos. Trata-se de um programa com código fonte em duas versões console. Na primeira versão temos os dados sendo gerenciados por objetos ArrayList. Na segunda versão nós tiramos proveito dos métodos dos métodos readObject() e writeObject() e da interface Serializable para implementar a serialização de objetos em Java. Dessa forma, os dados do sistema podem ser salvos e carregados todas as vezes que o sistema for iniciado. Um Controle de Gestão de Biblioteca é um projeto ideal para dominar a programação orientada a objetos em Java, além de permitir colocar em prática várias coisas que estudamos na linguagem e não temos a oportunidade de implementar. Assim, este código, se bem estudado e bem entendido, pode render um controle de biblioteca pronto para ser vendido no mercado ou implementado em sua própria escola ou faculdade. Basta conectar as funcionalidades das classes a um banco de dados tal como o MySQL e adicionar mais alguns pequenos detalhes. O Diagrama de Classes Java Antes de falarmos mais sobre o projeto do Sistema de Biblioteca, dê uma boa olhada no seu diagrama de classes: Como a aplicação está estruturada? Como podemos ver no diagrama de classes, todo o controle do sistema é feito a partir da classe Biblioteca, que contém objetos da classe ArrayList para guardar objetos das classes Usuario, Autor, Editora, Livro, Emprestimo e Multa. O relacionamento entre os objetos das classes envolvidas está bem definido no código fonte, com comentários e menus individuais para o gerenciamento de cada parte que compõe o controle de biblioteca apresentado. Um empréstimo envolve um livro e um usuário, e pode gerar uma multa caso a devolução seja feita fora do prazo. A multa é gerada somente na devolução. Em sistemas reais, o usuário não pode fazer uma nova locação caso a multa não seja paga. Deixamos como sugestão e desafio, essa implementação no código. No entanto, já fizemos todo o restante do cálculo para você, ou seja, fizemos a diferença entre a data do empréstimo e sua devolução e geramos a multa, se houver, já com o devido valor a ser pago. Um livro está relacionado a um autor e a uma editora. Inicialmente o livro é cadastrado como disponível. Porém, esse status é alterado para indisponível quando ele está envolvido em um empréstimo, e novamente disponível quando é feita a devolução. Tudo isso é feito por meio de vários menus de opções, como mostro a seguir. As opções de menu para o gerencimento do sistema da biblioteca O menu principal foi escrito usando-se o seguinte código: // método que exibe o menu principal do sistema public void menuPrincipal(){ Scanner entrada = new Scanner(System.in); while(true){ limparTela(); System.out.println("\n:: B I B L I O T E C A ::\n"); System.out.println("Bem-vindo(a) ao sistem. Escolha a opção desejada"); System.out.println("1 - Livros"); System.out.println("2 - Autores"); System.out.println("3 - Editoras"); System.out.println("4 - Usuários"); System.out.println("5 - Empréstimos"); System.out.println("6 - Multas"); System.out.println("7 - Sair"); System.out.print("Sua opção: "); // lê a opção do usuário int opcao = Integer.parseInt(entrada.nextLine()); switch(opcao){ case 1: // chama o menu de gerenciamento de livros menuGerenciarLivros(); break; case 2: // chama o menu de gerenciamento de autores menuGerenciarAutores(); break; case 3: // chama o menu de gerenciamento de editoras menuGerenciarEditoras(); break; case 4: // chama o menu de gerenciamento de usuários menuGerenciarUsuarios(); break; case 5: // chama o menu de gerenciamento de emprestimos menuGerenciarEmprestimos(); break; case 6: // chama o menu de gerenciamento de multas menuGerenciarMultas(); break; case 7: System.out.println("\nObrigado por usar o Sistema de Biblioteca\n"); System.exit(0); } } } Note que cada case do switch do menu principal chama um método que será responsável por exibir um menu individual para o gerencimento da classe correspondente. Veja, por exemplo, o menu para cadastrar um novo usuário na biblioteca: // menu para cadatrar, listar, pesquisar, excluir // e atualizar os usuários da biblioteca public int menuGerenciarUsuarios(){ Usuario temp; // serve para várias operações neste menu // serve para as pesquisas dos usuários String pesquisaUsuario; Scanner entrada = new Scanner(System.in); // mostra o menu de forma repetitiva até o usuário // usar a opção de sair while(true){ // tire caso não funcionar no seu sistema operacional limparTela(); System.out.println("\n:: G E R E N C I A R U S U Á R I O S ::\n"); System.out.println("Escolha a opção desejada"); System.out.println("1 - Novo Usuário"); System.out.println("2 - Listar Usuários"); System.out.println("3 - Pesquisar Usuário"); System.out.println("4 - Excluir Usuário"); System.out.println("5 - Atualizar Usuário"); System.out.println("6 - Voltar Menu Anterior"); System.out.print("Sua opção: "); // lê a opção do usuário int opcao = Integer.parseInt(entrada.nextLine()); switch(opcao){ case 1: // vamos cadastrar um novo usuário System.out.print("\nNome: "); String nomeUsuario = entrada.nextLine(); System.out.print("Idade: "); int idadeUsuario = Integer.parseInt(entrada.nextLine()); System.out.print("Sexo: "); char sexoUsuario = entrada.nextLine().charAt(0); // vamos incrementar o contador de usuários Usuario.contadorUsuarios++; // agora vamos criar um novo objeto da classe Usuario Usuario u = new Usuario(Usuario.contadorUsuarios, nomeUsuario, idadeUsuario, sexoUsuario); // e o adicionamos no ArrayList de usuários usuarios.add(u); // e finalmente mostramos uma mensagem de sucesso. System.out.println("\nO usuário foi cadastrado com sucesso"); salvarDadosArquivo(); // salva os dados no arquivo break; ... Devo usar ArrayList do Java para desenvolver o sistema? Sim, objetos da classe ArrayList são perfeitos quando precisamos representar relacionamentos um para muitos e muitos para um. É claro que poderíamos usar vetores de objetos (usando array), mas ficaríamos restritos a tamanhos fixos, enquanto o ArrayList nos permite cadastrar quantos usuários, livros, editoras, autores e empréstimos nós quisermos. Dessa forma, veja, por exemplo, o trecho de código que registra um novo empréstimo: case 1: // vamos cadastrar um novo empréstimmo // para registrar um novo empréstimo nós precisamos // de um usuário // o usuário que será relacionado a este empréstimo Usuario usuario = null; while(usuario == null){ System.out.print("\nInforme o id ou nome do usuário: "); String pesquisaUsuario = entrada.nextLine(); // chamamos o método que pesquisa o usuario usuario = pesquisarUsuario(pesquisaUsuario); if(usuario == null){ // usuario não encotrado System.out.print("\nUsuário não encontrado.\n\nDigite 1 para pesquisar novamente ou 2 para voltar ao menu anterior: "); int opcaoTemp = Integer.parseInt(entrada.nextLine()); if(opcaoTemp == 2){ return 1; // saímos daqui e voltamos para o menu anterior } } } System.out.println("Usuário selecionado: " + usuario.getNome()); // fim para registrar um novo empréstimo nós // precisamos de um usuário // para registrar um novo empréstimo nós precisamos // de um livro Livro livro = null; // o livro que será relacionado // a este empréstimo while(livro == null){ System.out.print("Informe o id, título ou ISBN do livro: "); String pesquisaLivro = entrada.nextLine(); // chamamos o método que pesquisa o livro livro = pesquisarLivro(pesquisaLivro); // livro não encontrado ou indisponível if((livro == null) || (!livro.isDisponivel())){ System.out.print("\nLivro não encontrado ou indisponível.\n\nDigite 1 para pesquisar novamente ou 2 para voltar ao menu anterior: "); int opcaoTemp = Integer.parseInt(entrada.nextLine()); if(opcaoTemp == 2){ return 1; // saímos daqui e voltamos para o menu anterior } } } System.out.println("Livro selecionado: " + livro.getTitulo()); // fim para cadastrar um novo empréstimo nós // precisamos de um livro try{ System.out.print("Data do Empréstimo: "); String dataEmprestimo = entrada.nextLine(); Date dataEmprestimoDate = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmprestimo); System.out.print("Data de Devolução: "); String dataDevolucao = entrada.nextLine(); Date dataDevolucaoDate = new SimpleDateFormat("dd/MM/yyyy").parse(dataDevolucao); // a data de devolução é menor que a data de empréstimo? if(dataDevolucaoDate.getTime() <= dataEmprestimoDate.getTime()){ System.out.println("\nA data de devolução deve ser maior que a data de empréstimo.\n"); } else{ // vamos incrementar o contador de empréstimos Emprestimo.contadorEmprestimos++; // vamos marcar o livro escolhido como indisponível livro.setDisponivel(false); // agora vamos criar um novo objeto da classe Emprestimo Emprestimo emprestimo = new Emprestimo(usuario, livro, Emprestimo.contadorEmprestimos, dataEmprestimoDate, dataDevolucaoDate, null, false); // e o adicionamos no ArrayList de empréstimos emprestimos.add(emprestimo); // e finalmente mostramos uma mensagem de sucesso. System.out.println("\nO empréstimo foi registrado com sucesso"); salvarDadosArquivo(); // salva os dados no arquivo } } catch(ParseException e){ System.out.println("\nAs datas informadas são inválidas.\n"); } break; Note que este trecho de código é parte do case da opção Novo Empréstimo do menu Gerenciar Empréstimos. Veja como usamos uma variável estática contadorEmprestimos da classe Emprestimo para criarmos um valor inteiro auto-incremento que nos permite identificadores únicos para cada empréstimo da biblioteca. Viu que código mais lindo? Note como a Programação Orientada a Objetos em Java nos permite desenvolver idéias de forma bem parecida mesmo ao mundo real. Como posso obter este código fonte? O código fonte desta aplicação é fornecido em duas versões: 1) SBIBLIOJCNB-A - Sistema de Gestão de Biblioteca em Java com Código Fonte Versão Console - NetBeans IDE ou Eclipse. 2) SBIBLIOJCNB-B - Sistema de Gestão de Biblioteca em Java com Código Fonte Versão Console - Lê e salva os dados em arquivo usando serialização (Serializable), ou seja, os métodos readObject() e writeObject() - NetBeans IDE ou Eclpse. Para adquirir, entre em contato conosco usando o WhatsApp ou e-mail indicados na lateral do site. Podemos combinar alterações e a adição de novas funcionalidades. Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes. |
Java ::: Coleções (Collections) ::: ArrayList |
Como excluir um elemento de uma ArrayList do Java baseado em seu valor - Como usar o método remove() da ArrayList do JavaQuantidade de visualizações: 13919 vezes |
Nesta dica mostrarei como remover a primeira ocorrência de um elemento na ArrayList. Para isso nós vamos usar o método remove(), que recebe o valor do elemento a ser excluído. Se o elemento estiver na ArrayList e for excluído com sucesso, o retorno será true. Se o elemento não for encontrado, o retorno será false. Veja o exemplo Java a seguir: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos_java; import java.util.ArrayList; public class Estudos { public static void main(String[] args) { // cria uma ArrayList que conterá strings ArrayList<String> nomes = new ArrayList<>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); nomes.add("Maria"); // Vamos remover o elemento "Osmar" if (nomes.remove("Osmar")) { System.out.println("O elemento foi removido com sucesso!"); } else { System.out.println("O elemento não foi encontrado!"); } System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: O elemento foi removido com sucesso! |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como inverter a ordem dos elementos de um array usando apenas uma variável temporáriaQuantidade de visualizações: 9439 vezes |
Pergunta/Tarefa: Considere o seguinte trecho de código: // declara, constrói e inicializa um array de 10 inteiros int valores[] = {6, 3, 90, 1, 54, 7, 12, 32, 9, 4}; int temp; Ordem inicial: 6 3 90 1 54 7 12 32 9 4 Ordem invertida: 4 9 32 12 7 54 1 90 3 6 Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; public class Estudos { public static void main(String[] args) { // declara, constrói e inicializa um array de 10 inteiros int valores[] = {6, 3, 90, 1, 54, 7, 12, 32, 9, 4}; int temp; // vamos mostar a ordem inicial dos elementos no vetor System.out.print("Ordem inicial: "); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } // vamos inverter a ordem dos elementos no array int inicio = 0, fim = valores.length - 1; while(inicio < fim){ temp = valores[inicio]; valores[inicio] = valores[fim]; valores[fim] = temp; // incrementa e decrementa as variáveis de controle inicio++; fim--; } // vamos mostar a ordem invertida dos elementos do vetor System.out.print("\nOrdem invertida: "); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } System.out.println(); } } |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
O código de ética profissional: Concorrência Em relação à concorrência perfeita, podemos dizer que se trata da competição pura. Essa estrutura sugere o funcionamento ideal ou equilibrado do mercado. A concorrência perfeita apresenta quatro características que a tornam o modelo econômico mais adequado. Assinale a alternativa que contém essas características. A) Baixo número de compradores e vendedores; produtos homogêneos; informações disponíveis; mobilidade. B) Elevado número de compradores e vendedores; produtos heterogêneos; informações disponíveis; mobilidade. C) Elevado número de compradores e vendedores; produtos homogêneos; informações confidenciais; mobilidade. D) Elevado número de compradores e vendedores; produtos homogêneos; informações disponíveis; mobilidade. E) Elevado número de compradores e vendedores; produtos homogêneos; informações disponíveis; fixidez. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Introdução à Ética Aristóteles viveu entre grandes personalidades, já que foi discípulo de Platão e mestre de Alexandre, O Grande. Suas reflexões giravam em torno da política, da ética e da metafísica, e foram tão importantes que na atualidade influenciam campos científicos diversos, da política à biologia, passando, é claro, pela filosofia. Considerando essas informações, analise as afirmativas a seguir. I - Aristóteles foi o primeiro filósofo a elaborar tratados sistemáticos de ética, como a Ética a Nicômaco. II - Aristóteles investiga o que é a felicidade, e ela deve ser um bem perfeito que se busca por si mesmo, e não como meio para outra coisa. III - Ele partilhava da ideia de que uma pessoa virtuosa precisa viver numa sociedade regida por Deus, porque a ética não pode desvincular-se da religião. Está correto apenas o que se afirma em: A) I e II, apenas. B) III, apenas. C) I, apenas. D) II, apenas. E) II e III, apenas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
(CEBRASPE - 2024 - ITAIPU - Técnico em Hidrologia) Em relação ao tempo, o balanço hídrico de uma bacia A) aumenta com a vazão de entrada e diminui com a vazão de evaporação. B) Aumenta com a vazão de entrada e aumenta com a vazão de evaporação. C) diminui com a vazão de entrada e diminui com a vazão de saída. D) diminui com a vazão de saída e diminui com a precipitação. E) aumenta com a vazão de evaporação e diminui com a precipitação. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica |
Perfil de velocidade turbulento A Lei da Parede para a determinação do perfil de velocidade empírico-turbulento envolve a determinação da velocidade de atrito na subcamada viscosa. Além do método da Lei da Parede, quais outros métodos existem para estimar o perfil de velocidade turbulento? A) Fator de atrito de Darcy, Lei da Potência e Lei Logarítmica. B) Princípio de Arquimedes, Lei da Potência e Lei do Defeito da Velocidade. C) Lei Logarítmica, Lei do Defeito da Velocidade e Lei da Potência. D) Lei da Potência, Lei de Hooke e Lei do Defeito da Velocidade. E) Fator de atrito de Darcy, Lei Logarítmica e Princípio de Arquimedes. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Dimensionamento de pilares de canto A direção mais crítica de um pilar de canto é determinada na comparação entre o índice de esbeltez do pilar e a esbeltez limite. Analise o pilar a seguir: Sobre esse pilar de canto, assinale a alternativa correta. A) A direção x é a mais crítica, e nela não são considerados os momentos de 2ª ordem. B) A direção y é a mais crítica, e nela não são considerados os momentos de 2ª ordem. C) A direção x é a mais crítica, e nela são considerados os momentos de 2ª ordem. D) A direção y é a mais crítica, e nela são considerados os momentos de 2ª ordem. E) Ambas as direções x e y são críticas, e nelas são considerados os momentos de 2ª ordem. Verificar Resposta Estudar Cards Todas as Questões |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento 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 |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades 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 |