Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear

Como calcular o determinante de uma matriz usando o Teorema de Laplace em Java

Quantidade de visualizações: 742 vezes
Como já vimos em dicas anteriores, o determinante de uma matriz de ordem 3 (três linhas e três colunas) pode ser obtido por meio da Regra de Sarrus. No entanto, quando temos matrizes de ordem 4 ou superior, a regra mais comumente aplicada é o Método dos Cofatores, ou Regra de Laplace.

O Método dos Cofatores, ou Expansão de Cofatores, ou ainda Determinante por Laplace, foi um método para o cálculo de determinantes inventado por Pierre Laplace.

Nesta dica mostrarei um código Java completo para calcular o determinante de uma matriz de ordem 3 usando expansão de cofatores. Note que a função calcularDeterminante() é uma função recursiva cujo caso base é a redução da matriz original em apenas uma linha e uma coluna.

Veja o código completo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

public class Estudos {
  public static void main(String[] args){
    // vamos definir a ordem da matriz
    int ordem = 3; // 3 linhas e 3 colunas
    
    // e agora criamos a matriz. Podemos definir os elementos
    // diretamente ou pedir para o usuário informar os valores
    int matriz[][] = {{1, 3, 0}, {0, 2, 5}, {2, 4, 4}};
 
    // mostramos a matriz completa
    System.out.println("A matriz é:\n");
    
    for (int i = 0; i < ordem; i++) {
      for (int j = 0; j < ordem; j++){
        System.out.printf("%5d", matriz[i][j]);
      }
      System.out.print("\n");
    }
    
    // vamos calcular o determinante usando o Teorema de Laplace
    int determinante = calcularDeterminante(matriz, ordem);
    
    // e mostramos o resultado
    System.out.println("\nO determinante da matriz é: " + determinante);  
  } 
 
  // função recursiva que encontra e retorna o determinante de uma
  // matriz de qualquer ordem
  public static int calcularDeterminante(int matriz[][], int ordem){
    int determinante = 0; // para guardar e retornar o determinante
    // matriz de cofatores
    int cofatores[][] = new int[ordem][ordem];
    // para guardar o sinal de multiplicação
    int sinal = 1;
    
    // caso base da recursividade:
    // se a matriz possuir apenas um elemento, retorna ele
    if (ordem == 1){
      return matriz[0][0];
    }
 
    // vamos percorrer cada um dos elementos da primeira linha    
    for (int f = 0; f < ordem; f++) {
      // vamos obter o cofator de matriz[0][f]
      calcularCofator(matriz, cofatores, 0, f, ordem);
      determinante = determinante + (sinal * matriz[0][f]
        * calcularDeterminante(cofatores, ordem - 1));
 
      // alterna o sinal
      sinal = -sinal;
    }
 
    // retorna o determinante
    return determinante;
  } 
  
  // função para retornar o cofator de mat[p][q] em temp[][]
  // ordem é a ordem atual da matriz mat[][]
  public static void calcularCofator(int mat[][], int temp[][],
    int p, int q, int ordem){
    // nos parâmetros, p indica linha e q indica coluna
    
    // variáveis auxiliares
    int i = 0, j = 0;
 
    // percorre cada um dos elementos da matriz recebida
    for (int linha = 0; linha < ordem; linha++) {
      // percorre as colunas
      for (int coluna = 0; coluna < ordem; coluna++) {
        // copia para a matriz temporária apenas os
        // elementos que não se encaixam na linha
        // e coluna informadas
        if (linha != p && coluna != q) {
          temp[i][j++] = mat[linha][coluna];
          // preenchemos a linha. Hora de aumentar
          // o índice da linha e resetar o índice
          // da coluna
          if (j == ordem - 1) {
            j = 0;
            i++;
          }
        }
      }
    }
  }
}

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

A matriz é:

    1    3    0
    0    2    5
    2    4    4

O determinante da matriz é: 18


Link para compartilhar na Internet ou com seus amigos:

Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais

Como usar o método getMethods() da classe Class - Como listar todos os métodos de uma classe ou interface Java em tempo de execução - Revisado

Quantidade de visualizações: 9311 vezes
O método getMethods() da classe Class permite obter um vetor contendo todos os métodos públicos de uma classe ou interface. Este método retorna um vetor de objetos da classe Method[] e pode atirar uma exceção SecurityException. Veja que os métodos herdados de e por superclasses da classe sendo investigada são também retornados.

O exemplo a seguir mostra como listar todos os métodos públicos da classe javax.swing.JButton (veja como usamos o método getName() da classe Method para obter o nome do método):

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivodecodigos;

import java.lang.reflect.*;
 
public class Estudos{
  public static void main(String args[]){
    // vamos carregar a classe JButton
    try{
      Class c = Class.forName("javax.swing.JButton");
 
      // obtém os nomes dos métodos
      Method[] metodos = c.getMethods(); 
 
      // exibe o nome de cada método
      for(int i = 0; i < metodos.length; i++){
        System.out.println(metodos[i].getName() + ", "); 
      }
    }
    catch(ClassNotFoundException e){
      System.out.println(e.getMessage()); 
    }
 
    System.exit(0);
  }
} 

Note que aqui nós estamos usando o método getName() da classe Method para retornar apenas o nome do método. Nesta seção você encontra exemplos de como obter também o tipo de retorno dos métodos de um determinada classe ou interface.

A execução desse código gera uma lista gigante de métodos. Vou mostrá-los abaixo para que você tenha uma idéia do funcionamento real:

getAccessibleContext(), getUIClassID(), isDefaultButton(), isDefaultCapable(), removeNotify(), setDefaultCapable(), updateUI(), getUI(), setAction(), setModel(), setUI(), addActionListener(), addChangeListener(), addItemListener(), doClick(), doClick(), getAction(), getActionCommand(), getActionListeners(), getChangeListeners(), getDisabledIcon(), getDisabledSelectedIcon(), getDisplayedMnemonicIndex(), getHideActionText(), getHorizontalAlignment(), getHorizontalTextPosition(), getIcon(), getIconTextGap(), getItemListeners(), getLabel(), getMargin(), getMnemonic(), getModel(), getMultiClickThreshhold(), getPressedIcon(), getRolloverIcon(), getRolloverSelectedIcon(), getSelectedIcon(), getSelectedObjects(), getText(), getVerticalAlignment(), getVerticalTextPosition(), imageUpdate(), isBorderPainted(), isContentAreaFilled(), isFocusPainted(), isRolloverEnabled(), isSelected(), removeActionListener(), removeChangeListener(), removeItemListener(), setActionCommand(), setBorderPainted(), setContentAreaFilled(), setDisabledIcon(), setDisabledSelectedIcon(), setDisplayedMnemonicIndex(), setEnabled(), setFocusPainted(), setHideActionText(), setHorizontalAlignment(), setHorizontalTextPosition(), setIcon(), setIconTextGap(), setLabel(), setLayout(), setMargin(), setMnemonic(), setMnemonic(), setMultiClickThreshhold(), setPressedIcon(), setRolloverEnabled(), setRolloverIcon(), setRolloverSelectedIcon(), setSelected(), setSelectedIcon(), setText(), setVerticalAlignment(), setVerticalTextPosition(), update(), contains(), getLocation(), print(), getSize(), isOpaque(), disable(), enable(), addAncestorListener(), addNotify(), addVetoableChangeListener(), computeVisibleRect(), createToolTip(), getActionForKeyStroke(), getActionMap(), getAlignmentX(), getAlignmentY(), getAncestorListeners(), getAutoscrolls(), getBaseline(), getBaselineResizeBehavior(), getBorder(), getBounds(), getClientProperty(), getComponentPopupMenu(), getConditionForKeyStroke(), getDebugGraphicsOptions(), getDefaultLocale(), getFontMetrics(), getGraphics(), getHeight(), getInheritsPopupMenu(), getInputMap(), getInputMap(), getInputVerifier(), getInsets(), getInsets(), getMaximumSize(), getMinimumSize(), getNextFocusableComponent(), getPopupLocation(), getPreferredSize(), getRegisteredKeyStrokes(), getToolTipLocation(), getToolTipText(), getToolTipText(), getTopLevelAncestor(), getTransferHandler(), getVerifyInputWhenFocusTarget(), getVetoableChangeListeners(), getVisibleRect(), getWidth(), getX(), getY(), grabFocus(), hide(), isDoubleBuffered(), isLightweightComponent(), isManagingFocus(), isOptimizedDrawingEnabled(), isPaintingForPrint(), isPaintingTile(), isRequestFocusEnabled(), isValidateRoot(), paint(), printAll(), putClientProperty(), registerKeyboardAction(), registerKeyboardAction(), removeAncestorListener(), removeVetoableChangeListener(), requestDefaultFocus(), requestFocus(), requestFocus(), requestFocusInWindow(), resetKeyboardActions(), reshape(), scrollRectToVisible(), setActionMap(), setAutoscrolls(), setBackground(), setBorder(), setComponentPopupMenu(), setDebugGraphicsOptions(), setDefaultLocale(), setDoubleBuffered(), setFocusTraversalKeys(), setFont(), setForeground(), setInheritsPopupMenu(), setInputMap(), setInputVerifier(), setMaximumSize(), setMinimumSize(), setNextFocusableComponent(), setOpaque(), setPreferredSize(), setRequestFocusEnabled(), setToolTipText(), setTransferHandler(), setVerifyInputWhenFocusTarget(), setVisible(), unregisterKeyboardAction(), firePropertyChange(), firePropertyChange(), firePropertyChange(), getRootPane(), getListeners(), paintImmediately(), paintImmediately(), repaint(), repaint(), revalidate(), setAlignmentX(), setAlignmentY(), add(), add(), add(), add(), add(), remove(), remove(), list(), list(), removeAll(), setFocusTraversalPolicyProvider(), transferFocusDownCycle(), validate(), getComponent(), getComponentCount(), getComponents(), getFocusTraversalPolicy(), invalidate(), isFocusCycleRoot(), isFocusCycleRoot(), setFocusTraversalPolicy(), addContainerListener(), applyComponentOrientation(), areFocusTraversalKeysSet(), countComponents(), deliverEvent(), doLayout(), findComponentAt(), findComponentAt(), getComponentAt(), getComponentAt(), getComponentZOrder(), getContainerListeners(), getFocusTraversalKeys(), getLayout(), getMousePosition(), insets(), isAncestorOf(), isFocusTraversalPolicyProvider(), isFocusTraversalPolicySet(), layout(), locate(), minimumSize(), paintComponents(), preferredSize(), printComponents(), removeContainerListener(), setComponentZOrder(), setFocusCycleRoot(), addPropertyChangeListener(), addPropertyChangeListener(), add(), remove(), toString(), getName(), contains(), size(), getLocation(), getParent(), setName(), list(), list(), list(), getSize(), location(), setSize(), setSize(), resize(), resize(), enable(), transferFocus(), transferFocusBackward(), addComponentListener(), addFocusListener(), addHierarchyBoundsListener(), addHierarchyListener(), addInputMethodListener(), addKeyListener(), addMouseListener(), addMouseMotionListener(), addMouseWheelListener(), bounds(), checkImage(), checkImage(), createImage(), createImage(), createVolatileImage(), createVolatileImage(), enableInputMethods(), getColorModel(), getComponentListeners(), getComponentOrientation(), getCursor(), getDropTarget(), getFocusListeners(), getFocusTraversalKeysEnabled(), getHierarchyBoundsListeners(), getHierarchyListeners(), getIgnoreRepaint(), getInputContext(), getInputMethodListeners(), getInputMethodRequests(), getKeyListeners(), getLocale(), getLocationOnScreen(), getMouseListeners(), getMouseMotionListeners(), getMouseWheelListeners(), getToolkit(), gotFocus(), hasFocus(), inside(), isBackgroundSet(), isCursorSet(), isFocusTraversable(), isFontSet(), isForegroundSet(), keyDown(), keyUp(), lostFocus(), mouseDown(), mouseDrag(), mouseEnter(), mouseExit(), mouseMove(), mouseUp(), move(), paintAll(), prepareImage(), prepareImage(), removeComponentListener(), removeFocusListener(), removeHierarchyBoundsListener(), removeHierarchyListener(), removeInputMethodListener(), removeKeyListener(), removeMouseListener(), removeMouseMotionListener(), removeMouseWheelListener(), setComponentOrientation(), setCursor(), setDropTarget(), setFocusTraversalKeysEnabled(), setFocusable(), setIgnoreRepaint(), show(), show(), transferFocusUpCycle(), getBackground(), getBounds(), getFocusCycleRootAncestor(), getFont(), getForeground(), getPeer(), getPropertyChangeListeners(), getPropertyChangeListeners(), getTreeLock(), isDisplayable(), isMaximumSizeSet(), isMinimumSizeSet(), isPreferredSizeSet(), isShowing(), isVisible(), nextFocus(), setBounds(), setBounds(), setLocale(), setLocation(), setLocation(), dispatchEvent(), getGraphicsConfiguration(), getMousePosition(), handleEvent(), isFocusable(), isLightweight(), isValid(), postEvent(), firePropertyChange(), firePropertyChange(), firePropertyChange(), firePropertyChange(), firePropertyChange(), action(), isEnabled(), isFocusOwner(), removePropertyChangeListener(), removePropertyChangeListener(), repaint(), repaint(), repaint(), wait(), wait(), wait(), equals(), hashCode(), getClass(), notify(), notifyAll(),

Esta dica foi revisada e atualizada para o Java 8.


Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear

Java para Geometria Analítica e Álgebra Linear - Como efetuar a soma de matrizes usando Java

Quantidade de visualizações: 1715 vezes
A soma de matrizes (assim como a subtração e multiplicação) é parte integrante da disciplina de Álgebra Linear e seu cálculo é muito simples.

Assumindo duas matrizes A e B, ambas com a mesma quantidade de linhas e colunas, a matriz soma pode ser obtida da seguinte forma:

\[A + B = \left[\begin{matrix} 3 & 4 & -1 \\ 8 & 2 & 1 \\ 7 & 5 & -3 \end{matrix}\right] + \left[\begin{matrix} -2 & 6 & 4 \\ 1 & 8 & 9 \\ -4 & 10 & 3 \end{matrix}\right] = \left[\begin{matrix} 1 & 10 & 3 \\ 9 & 10 & 10 \\ 3 & 15 & 0 \end{matrix}\right] \]

Um elemento da matriz é representando por sua posição linha e coluna. Usamos a letra i para a linha e j para a coluna, ou seja, aij. Dessa forma, o elemento na primeira linha e primeira coluna da matriz é a11, o elemento na primeira linha e segunda coluna é a12 e assim por diante.

Então, a soma das duas matrizes é feita da seguinte forma: Cij = Aij + Bij.

E agora veja o código Java que declara duas matrizes matrizA e matrizB e obtém uma terceira (matrizC) contendo a soma das duas anteriores. Novamente, note o requisito de que as matrizes deverão ter o mesmo número de linhas e colunas:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivodecodigos;
 
public class Estudos{
  public static void main(String args[]){
    // declarar, construir e inicializar as matrizes
    int matrizA[][] = {{3, 4, -1}, {8, 2, 1}, {7, 5, -3}};
    int matrizB[][] = {{-2, 6, 4}, {1, 8, 9}, {-4, 10, 3}};
    
    // esta é a matriz soma
    int matrizSoma[][] = new int[3][3];  
    
    // e agora vamos prosseguir com a soma
    for(int i = 0; i < matrizA.length; i++){
      for(int j = 0; j < matrizA[0].length; j++){
        matrizSoma[i][j] = matrizA[i][j] + matrizB[i][j];     
      } 
    }
    
    // vamos exibir os valores da primeira matriz
    System.out.println("Elementos da matriz A:");
    for(int i = 0; i < matrizA.length; i++){
      for(int j = 0; j < matrizA[0].length; j++){
        System.out.printf("%5d  ", matrizA[i][j]);
      }
      System.out.println();
    }
    
    // vamos exibir os valores da primeira matriz
    System.out.println("\nElementos da matriz B:");
    for(int i = 0; i < matrizB.length; i++){
      for(int j = 0; j < matrizB[0].length; j++){
        System.out.printf("%5d  ", matrizB[i][j]);
      }
      System.out.println();
    }
    
    // vamos exibir os valores da matriz soma
    System.out.println("\nElementos da matriz soma:");
    for(int i = 0; i < matrizSoma.length; i++){
      for(int j = 0; j < matrizSoma[0].length; j++){
        System.out.printf("%5d  ", matrizSoma[i][j]);
      }
      System.out.println();
    }
  }
}

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

Elementos da matriz A:
    3      4     -1  
    8      2      1  
    7      5     -3  

Elementos da matriz B:
   -2      6      4  
    1      8      9  
   -4     10      3  

Elementos da matriz soma:
    1     10      3  
    9     10     10  
    3     15      0



Java ::: Dicas & Truques ::: Strings e Caracteres

Java para iniciantes - Como pesquisar uma substring em uma string e retornar sua posição inicial

Quantidade de visualizações: 99 vezes
Nesta dica mostrarei como é possível usar o método indexOf() da classe String para obter o índice (começando em 0) da primeira ocorrência de uma substring em uma string. Se a substring não for encontrada, o retorno será -1.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    String frase = "Programar em Java é muito bom";
    System.out.println("Frase: " + frase); 
    
    // verifica se a frase contém a palavra Java
    int res = frase.indexOf("Java");
     
    if(res > 0){
      System.out.println("A substring foi encontrada " +
        " na posicao (índice): " + res);
    }
    else{
      System.out.println("A substring nao foi encontrada");
    }
     
    System.exit(0);
  }
} 

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

Frase: Programar em Java é muito bom
A substring foi encontrada na posicao (índice): 13


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Hidrologia e Hidráulica

Exercícios Resolvidos de Java - Como aplicar a Fórmula da Vazão pelo Método Racional em Java - De acordo com o método racional, a vazão máxima a ser considerada

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

Neste exercício de Java nós veremos como aplicar a Fórmula da Vazão pelo Método Racional para resolver uma questão de Hidrologia que caiu no concurso para Analista na Área de Engenharia Sanitária do MPE-MS em 2013.

1) De acordo com o método racional, a vazão máxima a ser considerada no projeto de um bueiro para uma chuva de intensidade igual a 2 mm/h, com duração igual ou superior ao tempo de concentração da bacia de contribuição que possui área igual a 18 km2 e coeficiente de escoamento superficial igual a 0,7 será, em m3/s, igual a

A) 5,4.

B) 7,0.

C) 11,5.

D) 14,0.

E) 25,2.

Sua saída deve ser parecida com:

Intensidade da chuva em mm/h: 2
Área da bacia em quilômetros quadrados: 18
Coeficiente de escoamento: 0.7
A vazão máxima é: 7.0
Resposta/Solução:

O primeiro passo para resolver esta questão é relembrando a fórmula da Vazão pelo Método Racional. Apresentado pela primeira vez em 1851 por Mulvaney e usado por Emil Kuichling em 1889, o Método Racional é um método indireto e estabelece uma relação entre a chuva e o escoamento superficial (deflúvio).

Usamos esta fórmula para calcular a vazão de pico de uma determinada bacia, considerando uma seção de estudo.

Eis a fórmula:

\[Q = \frac{C \cdot I \cdot A}{360} \]

Onde:

Q = vazão de pico (m3/s);

C = coeficiente de escoamento superficial que varia de 0 a 1.

I = intensidade média da chuva (mm/h);

A = área da bacia (ha), onde 1 ha = 10.000m2

Na questão do concurso nós já temos a intensidade da chuva em milímetros por hora, mas a área da bacia está em quilômetros quadrados, o que exigirá uma conversão para hectares. No código Java eu mostro essa parte comentada.

Então, hora de vermos a resolução comentada deste exercício usando Java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos ler a precipitação ou intensidade da chuva em mm/h
    System.out.print("Intensidade da chuva em mm/h: ");
    double intensidade = Double.parseDouble(entrada.nextLine());
    
    // vamos ler a área da bacia em quilômetros quadrados
    System.out.print("Área da bacia em quilômetros quadrados: ");
    double area_bacia = Double.parseDouble(entrada.nextLine());
    
    // vamos ler o coeficiente de escoamento
    System.out.print("Coeficiente de escoamento: ");
    double coeficiente = Double.parseDouble(entrada.nextLine());
    
    // agora vamos transformar quilômetros quadrados em
    // hectares
    area_bacia = area_bacia * 100;
    
    // e vamos calcular a vazão de pico em metros cúbicos
    double vazao = ((coeficiente * intensidade * area_bacia) / 360.0);
    
    // e mostramos o resultado
    System.out.println("A vazão máxima é: " + vazao);
  }
}



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

Exercícios Resolvidos de Java - Como calcular e exibir os 50 primeiros números primos em Java

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

Um inteiro é um número primo se ele for divisível somente por 1 e por ele mesmo. Assim, 2, 3, 5 e 7 são primos, enquanto 4, 6, 8 e 9 não são. Note que o número 1 não é primo.

Escreva um programa (algorítmo) Java que usa um laço for, while ou do...while para calcular e exibir os 50 primeiros números primos.

Sua saída deverá ser parecida com:

50 primeiros numeros primos:

     2     3     5     7    11    13    17    19    23    29
    31    37    41    43    47    53    59    61    67    71
    73    79    83    89    97   101   103   107   109   113
   127   131   137   139   149   151   157   163   167   173
   179   181   191   193   197   199   211   223   227   229
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

public class Estudos {
  public static void main(String[] args) {
    int quantidade = 50; // quantidade de números primos
    int contador = 0; // quantidade de números primos encontrados
    int numero = 0; // inteiro inicial             
               
    // Lembre-se! O número 1 não é primo
    System.out.println(quantidade + " primeiros numeros primos:\n");
  
    // laço while será executado até encontrar os 50 primeiros números primos 
    while(contador < quantidade){
      boolean primo = true;
                       
      // se o valor de i for 7, a variável j do laço contará
      // de 2 até 7 / 2 (divisão inteira), ou seja, 3. Se o 
      // módulo de 7 por qualquer um dos valores neste intervalo 
      // for igual a 0, então o número não é primo
      for(int j = 2; j <= (numero / 2); j++){
        if(numero % j == 0){
          primo = false; // não é primo
          break;
        }
      }
    
      if((primo) && (numero > 1)){
        System.out.printf("%6d", numero);
        contador++; // encontramos um número primo
      
        if(contador % 10 == 0){
          System.out.println();
        }
      }  
      
      numero++;
    }
  }
}



Java ::: Pacote java.awt.event ::: KeyEvent

Java Swing - Como obter o código da tecla pressionada usando o método getKeyCode() da classe KeyEvent do Java

Quantidade de visualizações: 4340 vezes
O método getKeyCode() da classe KeyEvent é usado quando queremos obter o código da tecla pressionada durante um evento KEY_PRESSED ou KEY_RELEASED. Para o evento KEY_TYPED, o keyCode é VK_UNDEFINED.

Veja um trecho de código no qual usamos o método getKeyCode() para obter e informar o código da tecla pressionada durante um evento keyPressed:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Janela extends JFrame implements KeyListener{
  public Janela(){
    super("Eventos do Teclado");
    Container c = getContentPane();
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    c.setLayout(layout);
    
    // vamos adicionar o objeto listener 
    addKeyListener(this);

    setSize(350, 250);
    setVisible(true);
  }
    
  @Override
  public void keyPressed(KeyEvent e){
    // vamos obter o código da tecla pressionada
    int codigo = e.getKeyCode();
    JOptionPane.showMessageDialog(null, "O código da tecla pressionada é: " + codigo);  
  }
    
  @Override
  public void keyReleased(KeyEvent e){
    // sem implementação
  }

  @Override
  public void keyTyped(KeyEvent e){
    // sem implementação
  }   
  
  public static void main(String args[]){
    Janela j = new Janela();
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Ao executar este código e pressionarmos uma tecla nós teremos o seguinte resultado:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

O código da tecla pressionada é: 65

É importante observar que o código da tecla pode ser obtido somente nos eventos keyPressed e keyReleased. Para o evento keyTyped o retorno do método getKeyCode() é VK_UNDEFINED.


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

Exercícios Resolvidos de Java - Usando o laço while para encontrar o MDC (Máximo Divisor Comum) de dois números

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

Escreva um programa Java que usa o laço while para calcular o MDC (Máximo Divisor Comum) de dois números. Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b.

Sua saída deve ser parecida com:

Informe o primeiro número: 16
Informe o segundo número: 24
O MDC de 16 e 24 é: 8
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
      
    // vamos que o usuário informe dois números
    System.out.print("Informe o primeiro número: ");
    int n1 = Integer.parseInt(entrada.nextLine());
    System.out.print("Informe o segundo número: ");
    int n2 = Integer.parseInt(entrada.nextLine());
    
    int mdc = 1; // partimos do principio de que 1 é o MDC inicial
    int k = 2; // MDC possível
    while((k <= n1) && (k <= n2)){ // enquanto k for menor ou igual aos dois números
       if((n1 % k == 0) && (n2 % k == 0)){
          mdc = k; // já temos um novo MDC
       }
       k++; // buscamos o novo MDC
    }

    // mostramos o resultado
    System.out.println("O MDC de " + n1 + " e " + n2 + " é: " + mdc);
    
    System.out.println("\n");
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos

Exercícios Resolvidos de Java - Programação Orientada a Objetos - Uma classe Temperatura que converte graus Celsius em Fahrenheit e vice-versa

Quantidade de visualizações: 7744 vezes
Exercício Resolvido de Java - POO - Programação Orientada a Objetos - Uma classe Temperatura que converte graus Celsius em Fahrenheit e vice-versa

Pergunta/Tarefa:

Escreva uma classe Java chamada Temperatura que converterá graus Celsius em Fahrenheit e vice-versa. Esta classe não possuirá nenhuma variável, nem de instância nem de classe, somente dois métodos, que deverão ter as seguintes assinaturas:

double celsiusParaFahrenheit(double)
double fahrenheitParaCelsius(double)
Note que os dois métodos recebem um argumento do tipo double e retorna um valor double.

Para facilitar a resolução, seguem abaixo as regras de conversão:

Celsius para Fahrenheit: F = (1,8 x C) + 32
Fahrenheit para Celsius: C = (F - 32) / 1,8

Depois de escrever a classe Temperatura, use o método main() da classe principal da aplicação Java para testar suas funcionalides.

Sua saída deverá ser parecida com:



Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

Código para a classe Temperatura.java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivodecodigos;

public class Temperatura {
  // converte de Celsius para Fahrenheit
  public double celsiusParaFahrenheit(double c){
    double f = (1.8 * c) + 32;
    return f;  
  }
  
  // converte de Fahrenheit para Celsius
  public double fahrenheitParaCelsius(double f){
    double c = (f - 32) / 1.8;  
    return c;  
  }    
}

Código para a classe Principal.java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivodecodigos;

import java.util.Scanner;

public class Principal{ 
  public static void main(String args[]){ 
    // vamos criar um objeto da classe Temperatura
    Temperatura t = new Temperatura();
    
    // vamos fazer a leitura do usuário
    Scanner entrada = new Scanner(System.in);
    
    // primeiro de Celsius para Fahrenheit
    System.out.print("Informe o grau em Celsius: ");
    double celsius = Double.parseDouble(entrada.nextLine());
    System.out.println(celsius + " graus Celsius equivale a " +
      t.celsiusParaFahrenheit(celsius) + " graus Fahrenheit.");
    
    // agora de Fahrenheit para Celsius
    System.out.print("Informe o grau em Fahrenheit: ");
    double fahrenheit = Double.parseDouble(entrada.nextLine());
    System.out.println(celsius + " graus Fahrenheit equivale a " +
      t.fahrenheitParaCelsius(fahrenheit) + " graus Celsius.");
  } 
}



Vamos testar seus conhecimentos em AutoCAD Civil 3D

A paleta Toolspace

Qual aba da paleta Toolspace é usada para exibir os objetos do Civil 3D em uma lista resumida e expansível?

A) Settings

B) Prospector

C) Toolbox

D) Survey
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Ações em estruturas: apresentação dos principais carregamentos na análise de estruturas convencionais

Um gerador industrial movido a gás natural, colocado na laje de cobertura de um prédio, apresentou defeito em um dos cilindros. Foi contratada uma empresa para prestar manutenção no gerador. A equipe da manutenção é formada por três pessoas, que carregam consigo cerca de 100 kg em equipamentos. Tendo em vista a descrição acima feita, a equipe e os equipamentos podem ser enquadrados em que classificação de carregamento?

A) Ação permanente direta.

B) Ação excepcional.

C) Ação acidental direta.

D) Ação permanente indireta.

E) Ação acidental indireta.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrostática

Princípios da Hidrostática

A hidrostática é um ramo da Física que tem como objeto de estudo a propriedade dos líquidos e fluidos sob a ação da força gravitacional em equilíbrio estático.

De acordo com o escopo dessa disciplina, marque a alternativa que melhor define massa específica.

A) Massa específica é a própria densidade relativa à substância.

B) Pode ser definida pela quantidade de matéria que cabe no volume de 1 litro dessa substância.

C) Massa específica é o volume ocupado por uma substância e a massa de uma porção oca de uma substância.

D) Massa específica pode ser a razão direta entre força pela área dada em Pascal (Pa), dividida pelo volume total da substância.

E) A massa especifica é a razão entre a massa homogênea e o volume.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil dos prepostos e preponentes

Considera-se ___________ a entrega de papéis, bens ou valores ao ____________, encarregado pelo __________, se os recebeu sem ______________, salvo nos casos em que haja prazo para reclamação. Qual opção abaixo preenche corretamente as lacunas?

A) Perfeita - preponente - preposto - protesto.

B) Inválida - preponente - preposto - protesto.

C) Inválida - preposto - preponente - protocolo.

D) Perfeita - preposto - preponente - protocolo.

E) Perfeita - preposto - preponente - protesto.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fundações

Fundações profundas

A grande vantagem das estacas moldadas in solo em relação às pré-moldadas é permitir que o comprimento estritamente necessário seja concretado.

O tipo de fundação profunda constituída por concreto, moldada in loco e executada por meio de trado contínuo e injeção de concreto pela própria haste do trado, é a:

A) estaca escavada mecanicamente.

B) estaca injetada.

C) estaca hélice contínua.

D) estaca Franki.

E) estaca-raiz.
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

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

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



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