E-Book 650 Dicas e Truques de Python - PDF com 1.200 páginas
Você está aqui: Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como retornar os elementos duplicados em um array do Java usando laços for aninhados - força-bruta

Quantidade de visualizações: 384 vezes
Nesta dica mostrarei como podemos usar força-bruta, ou seja laços aninhados para descobrir e listar os itens repetidos em um array Java. Note que chamei esta técnica de força-bruta porque existem outras mais eficientes. Porém, é sempre bom entender como esse código funciona para melhorar ainda mais a sua lógica de programação.

Veja o código Java completo para o exemplo:

----------------------------------------------------------------------
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) {
    // vamos criar um array de inteiros com valores repetidos
    int valores[] = {5, 1, 3, 2, 7, 1, 5};
      
    // agora varremos o array desde o primeiro elemento até
    // o último
    for (int i = 0; i < valores.length; i++) {
      // percorremos o array novamente a partir da posição
      // que estamos
      for (int j = i + 1; j < valores.length; j++) {
        // os dois valores são iguais?        
        if(valores[i] == valores[j]){
          System.out.println("Elemento repetido: " + valores[i]);
        }
      }
    }    
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Elemento repetido: 5
Elemento repetido: 1

Link para compartilhar na Internet ou com seus amigos:

Java ::: Java para Engenharia ::: Física - Hidrodinâmica

Como representar a Equação da Continuidade em Java - Java para Hidrodinâmica

Quantidade de visualizações: 193 vezes
O que é a Equação da Continuidade?

A Hidrodinâmica é a parte da Física que estuda os fluidos em movimento, enquanto a Equação da Continuidade, que é parte da Hidrodinâmica, determina o fluxo de um fluido através de uma área. Esta equação está muito presente quando o assunto é Dinâmica dos Fluidos ou Mecânica dos Fluidos.

A Equação da Continuidade é uma consequência direta da
Lei da Conservação da Massa. Por meio dessa propriedade, podemos dizer que a quantidade de massa de fluido que atravessa o tubo é a mesma na entrada e na saída.

Para melhor entendimento veja a seguinte figura:



Sabendo que a quantidade de água que entra na mangueira deve ser igual à mesma quantidade que sai, ao colocarmos o dedo na saída da mangueira, nós estamos estreitando a área da vazão, o que, consequentemente, aumenta a velocidade da água.

Qual é a Fórmula da Equação da Continuidade?

Antes de passarmos ao código Java, vamos revisar a Fórmula da Equação da Continuidade. Veja:

\[ A_1 \cdot \text{v}_1 = A_2 \cdot \text{v}_2 \]

Por meio dessa equação nós entramos com três valores e obtemos um quarto valor. Não se esqueça de que as velocidades são dadas em metros por segundo e as áreas são dadas em metros quadrados (de acordo com o SI - Sistema Internacional de Medidas). Tenha a certeza de efetuar as devidas conversões para não obter resultados incorretos.

Vamos escrever código Java agora?

A Equação da Continuidade em código Java

Para exemplificar como podemos representar a Equação da Continuidade em Java, vamos resolver o seguinte problema?

1) Um fluido escoa a 2 m/s em um tubo de área transversal igual a 200 mm2. Qual é a velocidade desse fluido ao sair pelo outro lado do tubo, cuja área é de 100 mm2?

a) 20 m/s

b) 4 m/s

c) 0,25 m/s

d) 1,4 m/s

e) 0,2 m/s

Note que a velocidade já está em metros por segundo, mas as áreas foram dadas em milímetros quadrados. Por essa razão nós deveremos converter milímetros quadrados em metros quadrados.

Veja o código Java completo para a resolução deste exercício de Equação da Continuidade:

----------------------------------------------------------------------
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) {
    Scanner entrada = new Scanner(System.in);  
    
    // vamos solicitar os dados de entrada
    System.out.print("Velocidade de entrada (m/s): ");
    double v1 = Double.parseDouble(entrada.nextLine());
    System.out.print("Área de entrada (milímetros quadrados): ");
    double a1 = Double.parseDouble(entrada.nextLine());
    System.out.print("Área de saída (milímetros quadrados): ");
    double a2 = Double.parseDouble(entrada.nextLine());
    
    // vamos converter as áreas em milímetros quadrados
    // para metros quadrados
    a1 = a1 / 1000000;
    a2 = a2 / 1000000;
    
    // agora calculamos a velocidade de saída
    double v2 = (a1 * v1) / a2;
    
    // e mostramos o resultado
    System.out.println("A velocidade de saída é: " + v2 +
      " m/s");
    
    System.out.println("\n");
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Velocidade de entrada (m/s): 2
Área de entrada (milímetros quadrados): 200
Área de saída (milímetros quadrados): 100
A velocidade de saída é: 4.0 m/s

Portanto, a velocidade do fluido na saída do tubo é de 4 m/s.


Java ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o comprimento da hipotenusa em Java dadas as medidas do cateto oposto e do cateto adjascente

Quantidade de visualizações: 1276 vezes
Nesta dica mostrarei como é possível usar a linguagem Java para retornar o comprimento da hipotenusa dadas as medidas do cateto oposto e do cateto adjascente. Vamos começar analisando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras), tudo que temos a fazer a converter esta fórmula para código Java. Veja:

----------------------------------------------------------------------
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[]){
    double a = 20; // medida do cateto oposto
    double b = 30; // medida do cateto adjascente
  
    // agora vamos calcular o comprimento da hipotenusa
    double c = Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
 
    // e mostramos o resultado
    System.out.println("O comprimento da hipotenusa é: " +
      c);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

O comprimento da hipotenusa é: 36.05551275463989

Como podemos ver, o resultado retornado com o código Java confere com os valores da imagem apresentada.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços

Exercício Resolvido de Java - Usando o laço do...while para pedir ao usuário para informar números inteiros e calcular a quantidade de números positivos, negativos, a soma e a média

Quantidade de visualizações: 9266 vezes
Pergunta/Tarefa:

Escreva um programa Java que usa o laço do...while para ler números inteiros até que o valor lido seja igual a 0. Em seguida mostre a quantidade de valores positivos e negativos, a soma dos valores e a média aritmética (sem incluir o valor 0 na contagem e no cálculo da média). A média deverá ser exibida como um valor de ponto flutuante.

Sua saída deverá ser parecida com a mostrada abaixo:

Informe um número inteiro (0 para sair): 5
Informe um número inteiro (0 para sair): -4
Informe um número inteiro (0 para sair): 3
Informe um número inteiro (0 para sair): 8
Informe um número inteiro (0 para sair): -2
Informe um número inteiro (0 para sair): 0
Quantidade de números positivos: 3
Quantidade de números negativos: 2
A soma dos números lidos é: 10
A média aritmética é: 2.0
Resposta/Solução:

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 exercicios;

import java.util.Scanner;

public class Exercicios {
  public static void main(String[] args) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
      
    // declaração das variáveis
    int numero, quantLidos = 0, soma = 0;
    int quantPositivos = 0, quantNegativos = 0;
      
    // laço do...while que repetirá até que o usuário informe o valor 0
    do {
      // lê o primeiro ou próximo número
      System.out.print("Informe um número inteiro (0 para sair): ");
      numero = Integer.parseInt(entrada.nextLine());

      if(numero > 0){ // o número é positivo?
        quantPositivos++;
      }
      else if(numero < 0){ // o número é negativo?
        quantNegativos++;
      }

      // soma este número à soma já existente
      soma += numero;
      // aumenta a contagem dos números lidos
      if(numero != 0){ // não incluir o 0 para sair do programa na contagem
        quantLidos++;
      }
    }
    while(numero != 0); // condição de parada do laço

    if(quantLidos == 0){
      System.out.println("Você não informou nenhum número.");
    }
    else{
      System.out.println("Quantidade de números positivos: " + quantPositivos);
      System.out.println("Quantidade de números negativos: " + quantNegativos);
      System.out.println("A soma dos números lidos é: " + soma);
      System.out.println("A média aritmética é: " + ((soma * 1.0) / quantLidos));
      
      // note a multiplicação de soma por 1.0 para gerar um valor de ponto flutuante
      // antes da divisão
    }    
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercícios Resolvidos de Java - Uma função recursiva que conta quantas vezes um valor inteiro k ocorre em um vetor de inteiros

Quantidade de visualizações: 1577 vezes
Pergunta/Tarefa:

Escreva um método recursivo que conta quantas vezes um valor inteiro k ocorre em um vetor de 10 inteiros. Seu método deverá ter a seguinte assinatura:

public static int quantRepeticoes(int indice, int valor, int[] vetor){
  // sua implementação aqui
}
Sua aplicação deverá solicitar ao usuário os valores do vetor e o valor a ser pesquisado. Sua saída deverá ser parecida com:

Informe o 1 valor: 2
Informe o 2 valor: 7
Informe o 3 valor: 4
Informe o 4 valor: 7
Informe o 5 valor: 1

Informe o valor a ser pesquisado no vetor: 7
O valor informado se repete 2 vezes.
Resposta/Solução:

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 exercicio;

import java.util.Scanner;

public class Exercicio {
  public static void main(String[] args) {
    // cria um novo objeto da classe Scanner
    Scanner entrada = new Scanner(System.in);
    
    // vamos declarar um vetor de 10 inteiros
    int valores[] = new int[5];
    
    // vamos pedir ao usuário que informe os valores do vetor
    for(int i = 0; i < valores.length; i++){
      System.out.print("Informe o " + (i + 1) + " valor: ");
      // efetua a leitura do valor informado para a posição atual do vetor
      valores[i] = Integer.parseInt(entrada.nextLine());
    }
    
    // agora vamos pedir para informar o valor a ser pesquisado
    System.out.print("\nInforme o valor a ser pesquisado no vetor: ");
    int valor = Integer.parseInt(entrada.nextLine());
    
    // e vamos ver a quantidade de repetições
    int repeticoes = quantRepeticoes(0, valor, valores);
    System.out.print("O valor informado se repete " + repeticoes + " vezes.");
    
    System.out.println("\n");
  }
  
  // método recursivo que recebe um valor
  public static int quantRepeticoes(int indice, int valor, int[] vetor){
    if(indice == vetor.length - 1){ // caso base...hora de parar a recursividade
      if(vetor[indice] == valor){
        return 1; // mais um repetição foi encontrada
      }
    }
    else{ // dispara mais uma chamada recursiva
      if(vetor[indice] == valor){ // houve mais uma repetição
        return 1 + quantRepeticoes(indice + 1, valor, vetor);
      }
      else{
        return 0 + quantRepeticoes(indice + 1, valor, vetor); // não repetiu
      }
    }
    
    return 0; // só para deixar o compilador satisfeito...esta linha nunca é executada
  }
}



Java ::: Fundamentos da Linguagem ::: Modificadores

Programação Orientada a Objetos em Java - Como usar o modificador static em suas aplicações Java

Quantidade de visualizações: 18717 vezes
O modificador static pode ser aplicado a métodos e variáveis. Além disso, este modificador pode ser usado para a inicialização de códigos estáticos de uma classe.

Um recurso marcado com este modificador pertence à uma classe, e não às suas instâncias. Isso quer dizer que podemos acessar métodos ou variáveis estáticas sem a necessidade de criar uma cópia da classe. Veja por exemplo o método main() usado como ponto de entrada para um aplicativo Java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public static void main(String args[]){
  //
}

Como o método main é chamado antes mesmo de qualquer cópia de classes serem criadas, o modificador static se torna essencial. Veja o que acontece se o retirarmos:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public class Estudos{
  public void main(String args[]){
    System.out.println("Olá");
    System.exit(0);
  }
}

O código compila sem problemas. Porém, ao tentarmos executar teremos o seguinte erro:

Exception in thread "main" 
java.lang.NoSuchMethodError: main
Vejamos agora o que acontece quando tentamos acessar uma variável não estática a partir de um trecho de código estático:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public class Estudos{
  String frase = "Estou aqui!";   

  public static void main(String args[]){
    System.out.println(frase);
    System.exit(0);
  }
}

Ao tentarmos compilar este código teremos o seguinte erro:

Estudos.java:5: non-static variable frase cannot be 
referenced from a static context
 System.out.println(frase);
                       ^
1 error
Este erro aconteceu porque a variável frase foi definida sem o modificar static. Isso faz com que ela pertença à instâncias da classe, ou seja, para acessá-la teríamos que criar uma cópia da classe Estudos. Experimente alterá-la para:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

static String frase = "Estou aqui!";

Execute o programa novamente e veja como o erro desaparece.

Para demonstrar como recursos estáticos pertencem mesmo à classe e não às suas cópias, considere o seguinte exemplo:

----------------------------------------------------------------------
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[]){
    for(int i = 0; i < 5; i++){
      Cliente cliente = new Cliente();
      System.out.println("Sou o cliente número: " + 
        cliente.quant);
    } 
   
    System.exit(0);
  }
}

class Cliente{
  public static int quant = 0;   

  public Cliente(){
    quant++;
  }
}

Ao compilar e executar este código você terá o seguinte resultado:

Sou o cliente número: 1
Sou o cliente número: 2
Sou o cliente número: 3
Sou o cliente número: 4
Sou o cliente número: 5
Isso aconteceu porque a classe Cliente possui uma variável estática que é incrementada todas as vezes que o construtor da classe é chamado.

Veremos agora o uso do modificador static na inicialização de blocos de código estáticos. Observe o código:

----------------------------------------------------------------------
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[]){
    for(int i = 0; i < 5; i++){
      Cliente cliente = new Cliente();
      System.out.println("Sou o cliente número: " + 
        cliente.quant);
    } 
   
    System.exit(0);
  }
}

class Cliente{
  public static int quant = 0;   

  public Cliente(){
    quant++;
  }  

  static{
    System.out.println("Bloco estático");
  }
}

Compile e execute este exemplo. Você terá o seguinte resultado:

Bloco estático
Sou o cliente número: 1
Sou o cliente número: 2
Sou o cliente número: 3
Sou o cliente número: 4
Sou o cliente número: 5
Veja que criamos 5 cópias da classe Cliente. Porém, o bloco de código estático foi executado apenas uma vez, e antes mesmo do construtor da classe.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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


© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 105 usuários muito felizes estudando em nosso site.