Você está aqui: Java ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar a instrução switch do JavaQuantidade de visualizações: 64595 vezes |
Quando precisamos escolher entre múltiplos caminhos alternativos e esta escolha pode ser baseada em um valor inteiro, a instrução switch é uma boa opção. Veja seu uso:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- public class Estudos{ public static void main(String[] args){ int valor = 4; switch(valor){ case 1: System.out.println("Valor é 1"); break; case 2: System.out.println("Valor é 2"); break; case 3: System.out.println("Valor é 3"); break; default: System.out.println("Valor diferente de 1, 2 e 3"); break; } } } A variável fornecida à instrução switch deve ser do tipo byte, short, char, ou int. Ela não pode ser long, float, double, boolean ou referência a objetos. Veja o que acontece quando tentamos usar uma variável do tipo long: Estudos.java:5: possible loss of precision found : long required: int switch(valor){ ^ 1 error |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca |
Como percorrer uma árvore binária em Java usando o algorítmo depth-first search (DFS) de forma iterativaQuantidade de visualizações: 884 vezes |
Nesta dica mostrarei como podemos implementar o algorítmo da Busca em Profundidade (DFS, do inglês depth-first search) em Java de forma iterativa, ou seja, sem usar recursão. Não farei a busca, mas sim o percurso, para que você entenda como a lógica dessa busca funciona. Antes de iniciarmos, veja a árvore binária que vamos usar no exemplo: Note que esta árvore possui seis nós. O nó 5 é o nó raiz, e possui como filhos os nós 4 e 9. O nó 4, por sua vez, possui apenas um filho, o nó 2, ou seja, o filho da esquerda. O nó 9 possui dois filhos: o nó 3 é o filho da esquerda e o nó 12 é o filho da direita. Os filhos da árvore binária que não possuem outros filhos são chamados de folhas. Com a abordagem da busca em profundidade, começamos com o nó raiz e viajamos para baixo em uma única ramificação. Se o nó desejado for encontrado naquela ramificação, ótimo. Do contrário, continuamos subindo e pesquisando por nós não visitados. Esse tipo de busca também tem uma notação big O de O(n). Vamos à implementação? Veja o código para a classe No, que representa um nó na árvore binária: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // implementação da classe No class No{ public int valor; // o valor do nó public No esquerdo; // o filho da esquerda public No direito; // o filho da direita public No(int valor){ this.valor = valor; this.esquerdo = null; this.direito = null; } } Veja agora o código completo para o exemplo. Note que usei uma implementação não-recursiva, na qual todos os nós expandidos recentemente são adicionados a uma pilha, para realizar a exploração. O uso da pilha permite o retrocesso (backtracking) de forma a reiniciarmos o percurso ou busca no próximo nó. Para manter o código o mais simples possível, eu usei a classe Stack do Java, juntamente com seus métodos push() e pop() para simular a pilha. Usei também uma ArrayList para guardar os valores da árvore binária na ordem depth-first. Eis 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.ArrayList; import java.util.Stack; // implementação da classe No class No{ public int valor; // o valor do nó public No esquerdo; // o filho da esquerda public No direito; // o filho da direita public No(int valor){ this.valor = valor; this.esquerdo = null; this.direito = null; } } public class Estudos{ public static void main(String[] args){ // vamos criar os nós da árvore No cinco = new No(5); // será a raiz da árvore No quatro = new No(4); No nove = new No(9); No dois = new No(2); No tres = new No(3); No doze = new No(12); // vamos fazer a ligação entre os nós cinco.esquerdo = quatro; cinco.direito = nove; quatro.esquerdo = dois; nove.esquerdo = tres; nove.direito = doze; // agora já podemos efetuar o percurso depth-first ArrayList<Integer> valores = percursoDepthFirst(cinco); System.out.println("Os valores na ordem Depth-First são: " + valores); } public static ArrayList<Integer> percursoDepthFirst(No no){ // vamos usar uma ArrayList para retornar os elementos // na ordem Depth-First ArrayList<Integer> valores = new ArrayList<>(); // vamos criar uma nova instância de uma pilha Stack<No> pilha = new Stack<>(); // já vamos adicionar o primeiro nó recebido, que é a raiz pilha.push(no); // enquanto a pilha não estiver vazia while(pilha.size() > 0){ // vamos obter o elemento no topo da pilha No atual = pilha.pop(); // adicionamos este valor no ArrayList valores.add(atual.valor); // vamos colocar o filho direito na pilha if(atual.direito != null){ pilha.push(atual.direito); } // vamos colocar o filho esquerdo na pilha if(atual.esquerdo != null){ pilha.push(atual.esquerdo); } } return valores; // retorna os valores da árvore } } Ao executarmos este código Java nós teremos o seguinte resultado: Os valores na ordem Depth-First são: [5, 4, 2, 9, 3, 12] Compare estes valores com a imagem vista anteriormente para entender ainda melhor o percurso ou busca Depth-First. |
Java ::: Pacote java.awt ::: Graphics |
Como retornar a cor atual do contexto de desenho usando o método getColor() da classe Graphics do Java - Computação gráfica em JavaQuantidade de visualizações: 7804 vezes |
Antes de efetuar qualquer desenho na superfície de um componente, é importante saber qual cor está definida no momento, assim podemos alterá-la se necessário. Para isso podemos usar o método getColor() da classe Graphics. Este método retorna um objeto da classe Color. Veja um exemplo no qual obtemos a cor usada atualmente para desenhar na superfície de um JLabel: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Estudos extends JFrame{ JLabel label; public Estudos() { super("Desenhando"); Container c = getContentPane(); c.setLayout(new BorderLayout()); // Cria um JLabel label = new JLabel(); c.add(label, BorderLayout.CENTER); // Cria um botão JButton btn = new JButton("Obter a cor do contexto"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ Graphics graphics = label.getGraphics(); // obtém a cor usada para desenhar no // contexto de desenho Color cor = graphics.getColor(); JOptionPane.showMessageDialog(null, "A cor usada atualmente é " + cor.toString()); } } ); // Adiciona o botão à janela c.add(btn, BorderLayout.SOUTH); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Ao executar este código Java nós teremos o seguinte resultado: A cor usada atualmente é java.awt.Color[r=0,g=0,b=0] |
Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como passar vetores e matrizes (arrays) para seus métodos JavaQuantidade de visualizações: 16155 vezes |
Nesta dica mostrarei como você pode passar um array (vetor ou matriz) para seus métodos Java. Observe que um array é um objeto Java, e objetos são sempre passados por referência. Assim, as alterações feitas no vetor ou matriz dentro do método afetarão o array original. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; public class Estudos{ public static void main(String[] args){ int[] valores = {43, 6, 17, 23, 8}; // Exibe os valores antes de passar o // array para o método multiplicar for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + ", "); } System.out.println(); // fornece o array para o método multiplicar multiplicar(valores, 2); // Exibe os valores depois de passar o // array para o método multiplicar for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + ", "); } System.exit(0); } public static void multiplicar(int a[], int num){ for(int i = 0; i < a.length; i++){ a[i] = a[i] * num; } } } Ao executar este código nós teremos o seguinte resultado: 43, 6, 17, 23, 8, 86, 12, 34, 46, 16, |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Princípios específicos do Direito do Consumidor (Exame de ordem 2013). Maria e Manoel, casados, pais dos gêmeos Gabriel e Thiago, que têm apenas três meses de vida, residem há seis meses no Condomínio Vila Feliz. O fornecimento do serviço de energia elétrica na cidade onde moram é prestado por uma única concessionária, a Companhia de Eletricidade Luz S.A. Há uma semana, o casal vem sofrendo com as contínuas e injustificadas interrupções na prestação do serviço pela concessionária, o que já acarretou a queima do aparelho de televisão e da geladeira, com a perda de todos os alimentos nela contidos. O casal pretende ser indenizado. Nesse caso, à luz do princípio da vulnerabilidade previsto no Código de Proteção e Defesa do Consumidor, assinale a afirmativa que esteja de acordo. A) Prevalece o entendimento jurisprudencial no sentido de que a vulnerabilidade no Código do Consumidor é sempre presumida, tanto para o consumidor pessoa física, Maria e Manoel, quanto para a pessoa jurídica, no caso, o Condomínio Vila Feliz, tendo ambos direitos básicos à indenização e à inversão judicial automática do ônus da prova. B) A doutrina consumerista dominante considera a vulnerabilidade um conceito jurídico indeterminado, plurissignificativo, sendo correto afirmar que, no caso em questão, está configurada a vulnerabilidade fática do casal diante da concessionária, havendo direito básico à indenização pela interrupção imotivada do serviço público essencial. C) É dominante o entendimento no sentido de que a vulnerabilidade nas relações de consumo é sinônimo exato de hipossuficiência econômica do consumidor. Logo, basta ao casal Maria e Manoel demonstrá-la para receber a integral proteção das normas consumeristas e o consequente direito básico à inversão automática do ônus da prova e à ampla indenização pelos danos sofridos. D) A vulnerabilidade nas relações de consumo se divide em apenas duas espécies: a jurídica ou a científica e a técnica. Aquela representa a falta de conhecimentos jurídicos ou outros pertinentes à contabilidade e à economia, e esta, à ausência de conhecimentos específicos sobre o serviço oferecido, sendo que sua verificação é requisito legal para inversão do ônus da prova a favor do casal e do consequente direito à indenização. E) No sistema das relações de consumo reguladas pelo Código de Defesa do Consumidor, a identificação de que existe um elo mais fraco na relação traduz o reconhecimento da transparência. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fundações |
Fundações profundas Fundações profundas podem ser classificadas de diferentes maneiras. Uma forma de distinguir os diferentes tipos de estaca é pelo material empregado em sua composição. Com base no exposto, assinale com V (verdadeiro) ou F (falso) as proposições a seguir, sobre estacas de madeira. ( ) A madeira em contato com o oxigênio do ar tende a apresentar fungos que inibem a deterioração do material. ( ) As estacas de madeira apodrecem rapidamente se mantidas permanentemente debaixo d'água. ( ) No Brasil, estacas de madeira são amplamente utilizadas de forma permanente em obras comerciais e residenciais. Assinale a alternativa que indica, de cima para baixo, a ordem correta. A) V, F, F. B) V, V, V. C) F, F, F. D) F, F, V. E) V, V, F. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Alvenaria: Técnicas construtivas Durante o levantamento, devemos aferir o nivelamento e o prumo de uma parede em blocos cerâmicos: A) Somente se houver um embarrigamento ou desnivelamento visível. B) Ao levantar 1,0 m a parede. C) Somente na última fiada. D) A cada fiada executada. E) A cada 3 fiadas executadas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Dimensionamento de Redes de Distribuição de Água A pergunta essencial que você tem de responder para dimensionar uma rede de abastecimento é: quantos litros de água você precisa distribuir para essa população? Quanto às redes de abastecimento podemos afirmar que: Selecione a resposta: A) O coeficiente de majoração k1 aplicado no cálculo da vazão que circula na rede, se refere ao fator de correção quanto ao dia de menor consumo. B) Pode-se obter o diâmetro mínimo da tubulação, dos condutos, ajudando a dimensionar as redes de distribuição em função das velocidades máximas e vazões máximas conforme normas técnicas. C) O coeficiente de majoração k2 aplicado no cálculo da vazão que circula na rede, se refere ao fator de correção quanto a hora de menor consumo. D) Ao dividir a vazão de distribuição pelo comprimento da rede (L), você obtém a vazão específica. E) A rede de abastecimento, e distribuição para uma região pode ser configurada em ramificada, em grelha, em cela e em diagonais. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Qual o resultado da execução do seguinte código Python?estados = {"SP": "SÃO PAULO", "GO": "GOIÁS", "RJ": "RIO DE JANEIRO", "MG": "MINAS GERAIS"} print("GO" in estados) A) "GO" B) True C) False D) "SP", "GO", "RJ", "MG" E) "GOIÁS" Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
C - Como calcular a massa de um corpo dada sua energia cinética e sua velocidade usando a linguagem C |
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 |