Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções

Métodos - Ex. 3 - Um método estático que recebe um número inteiro e retorna true se ele for par e false em caso contrário - Desafio de Programação Resolvido em Java

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

Escreva um método Java que recebe um número inteiro e retorna true se o número for par e false em caso contrário. Este método deverá ter a seguinte assinatura:

public static boolean isPar(int n){
  // sua implementação aqui
}
Este método deverá, obrigatoriamente, estar na classe principal (aquela que contém o método main()). Peça ao usuário para fornecer um número inteiro e use o método desenvolvido para testar se o valor é par ou impar.

Sua saída deverá ser parecida com:



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

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    
    // vamos solicitar que o usuário informe um número inteiro
    System.out.print("Informe um número inteiro: ");
    int numero = Integer.parseInt(entrada.nextLine());

    // vamos verificar se o número informado e par
    if(isPar(numero)){
      System.out.println("O número informado é par");
    }
    else{
      System.out.println("O número informado é ímpar");  
    }
    
    System.out.println("\n");
  }
  
  // um método estático que recebe um número inteiro e retorna true se ele par
  // e false em caso contrário
  public static boolean isPar(int n){
    // o número é par?
    if(n % 2 == 0){
      return true;  
    }
    else{
      return false; // é ímpar  
    }
  }
}


Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Árvores Binárias e Árvores Binárias de Busca

Exercícios Resolvidos de Java - Travessia de uma árvore binária de busca usando o percurso em-ordem (in-order, In-ordem ou ordem simétrica)

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

O percurso em ordem (em-ordem, in-order, In-ordem ou ordem simétrica) é usado quando queremos exibir os valores dos nós da árvore binária de busca em ordem ascendente.

Neste tipo de percurso nós visitamos primeiramente a sub-árvore da esquerda, então o nó atual e finalmente a sub-árvore à direita do nó atual. É importante notar que esta travessia é feita por meio de uma função recursiva.

Escreva um programa Java que contenha uma árvore binária de busca cujos nós guardarão, além das referências para o filho esquerdo e o filho direito, apenas um valor inteiro. Forneça uma função inserir() que permitirá inserir os valores na árvore. Em seguida forneça uma função recursiva que permitirá fazer a travessia in-order da árvore.

Sua saída deverá ser parecida com:

Informe um valor inteiro: 7
Informe um valor inteiro: 3
Informe um valor inteiro: 18
Informe um valor inteiro: 4
Informe um valor inteiro: 9

Percurso em ordem:
3 4 7 9 18
Resposta/Solução:

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

Código para NoArvore.java:

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

package estudos;

public class NoArvore {
  int valor; // valor armazenado no nó
  NoArvore esquerdo; // filho esquerdo
  NoArvore direito; // filho direito

  // construtor do nó
  public NoArvore(int valor){
    this.valor = valor;
  }
}

Código para ArvoreBinariaBusca.java:

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

package estudos;

public class ArvoreBinariaBusca {
  private NoArvore raiz; // referência para a raiz da árvore
  
  // método usado para inserir um novo nó na árvore
  // retorna true se o nó for inserido com sucesso e false
  // se o elemento não puder ser inserido (no caso de já
  // existir um elemento igual)
  public boolean inserir(int valor){
    // a árvore ainda está vazia?
    if(raiz == null){
      // vamos criar o primeiro nó e definí-lo como a raiz da árvore
      raiz = new NoArvore(valor); // cria um novo nó
    }
    else{
      // localiza o nó pai
      NoArvore pai = null;
      NoArvore noAtual = raiz; // começa a busca pela raiz
 
      // enquanto o nó atual for diferente de null
      while(noAtual != null){
        if(valor < noAtual.valor) {
          pai = noAtual;
          noAtual = noAtual.esquerdo;
        }
        else if(valor > noAtual.valor){
          pai = noAtual;
          noAtual = noAtual.direito;
        }
        else{
          return false; // um nó com este valor foi encontrado
        }
      }
       
      // cria o novo nó e o adiciona ao nó pai
      if(valor < pai.valor){
         pai.esquerdo = new NoArvore(valor);
      }
      else{
        pai.direito = new NoArvore(valor);
      }
    }

    return true; // retorna true para indicar que o novo nó 
    // foi inserido
  }
  
  // método que permite disparar a travessia em-ordem
  public void emOrdem(){
    emOrdem(raiz);
  }

  // sobrecarga do método emOrdem com uma parâmetro (esta é a
  // versão recursiva do método)
  private void emOrdem(NoArvore raiz){
    if(raiz == null){ // condição de parada
      return;
    }
    
    // visita a sub-árvore da esquerda
    emOrdem(raiz.esquerdo);
    // visita o nó atual
    System.out.print(raiz.valor + " ");
    // visita a sub-árvore da direita
    emOrdem(raiz.direito);
  }
}

E aqui está o código para a classe que permite testar a árvore:

----------------------------------------------------------------------
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 criar um novo objeto da classe ArvoreBinariaBusca
    ArvoreBinariaBusca arvore = new ArvoreBinariaBusca();
   
    // vamos inserir 5 valores na árvore
    for(int i = 0; i < 5; i++){
      System.out.print("Informe um valor inteiro: ");
      int valor = Integer.parseInt(entrada.nextLine());
      
      // vamos inserir o nó e verificar o sucesso da operação
      if(!arvore.inserir(valor)){
        System.out.println("Erro. Um elemento já contém este valor.");  
      }
    }
    
    // vamos exibir os nós da árvore usando o percurso em ordem
    System.out.println("\nPercurso em ordem:");
    arvore.emOrdem();
    
    System.out.println("\n");
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções

Exercício Resolvido de Java - Escreva um método chamado inverter() que recebe um número inteiro e retorna este mesmo número invertido

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

Escreva um método Java chamado inverter() que recebe um número inteiro e retorna este mesmo número invertido. Este método deverá ter a seguinte assinatura:

public static int inverter(int numero){
  // sua implementação aqui
}
Este método deverá, obrigatoriamente, estar na classe principal (aquela que contém o método main()). Após a implementação do método inverter(), vá até o método main() e peça ao usuário para informar um número inteiro qualquer. Em seguida faça uma chamada ao método inverter() passando o valor informado como argumento, obtenha o retorno e exiba-o.

ATENÇÃO: Para a resolução deste exercício é permitido usar apenas os operadores aritméticos.

Sua saída deverá ser parecida com:

Informe um número inteiro: 487
O valor invertido é: 784
Resposta/Solução:

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

----------------------------------------------------------------------
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) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
     
    // vamos pedir ao usuário que informe um número inteiro
    System.out.print("Informe um número inteiro: ");
    int numero = Integer.parseInt(entrada.nextLine());
     
    // fazer efetuar uma chamada ao método inverter() e obter o valor invertido
    int invertido = inverter(numero);
     
    // e exibir o resultado
    System.out.println("O valor invertido é: " + invertido);
  }
   
  // método estático que recebe um número inteiro e o devolve invertido
  public static int inverter(int numero){
    int resultado = 0; // guarda o resultado da inversão
     
    // enquanto número for diferente de 0
    while(numero != 0){
      // obtém resto da divisão de número por 10
      int resto = numero % 10;
 
      // resultado recebe ele mesmo multiplicado por 10 mais o resto
      resultado = resultado * 10 + resto;
 
      // finalmente número recebe ele mesmo dividido por 10
      numero = numero / 10;
    }
 
    return resultado; // retorna o resultado
  }
}



Java ::: Fundamentos da Linguagem ::: Tipos de Dados

Como usar null em Java

Quantidade de visualizações: 31601 vezes
O tipo de dados null é um tipo (ou valor) especial que indica que uma referência não está apontando para nenhum objeto, ou seja, aponta para uma posição de memória nula. Este tipo pode ser atribuído (ou testado) apenas a referências. Seu uso não é permitido com primitivos.

Veja um trecho de código no qual definimos que uma variável do tipo String aponta para um objeto nulo:

----------------------------------------------------------------------
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[]){
    String nome = null;  

    System.out.println(nome.length());    

    System.exit(0);
  }
}

Este código compila normalmente. Porém, ao tentarmos executá-lo, temos uma exceção de tempo de execução NullPointerException:

Exception in thread "main" 
java.lang.NullPointerException
  at Estudos.main(Estudos.java:5)


Isso aconteceu porque estamos tentando executar um método de um objeto que não existe.

Uma técnica muito valiosa é testar se uma referência não está apontando para um objeto nulo. Veja como isso é feito:

----------------------------------------------------------------------
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[]){
    String nome = null;  

    if(nome != null)
      System.out.println(nome.length());    
    else
      System.out.println("Objeto é nulo.");      

    System.exit(0);
  }
}

Tenha em mente que, quando uma referência recebe o valor null, o objeto para o qual ela apontava fica imediatamente disponível para o coletor de lixo (Garbagge Colector), ou seja, a memória ocupada pelo objeto pode ser liberada a qualquer momento.

Veja agora o que acontece quando tentamos atribuir o valor null a um primitivo:

----------------------------------------------------------------------
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 = null;     

    System.exit(0);
  }
}

Eis a mensagem de erro de compilação:

Estudos.java:3: incompatible types
found   : <nulltype>
required: int
 int valor = null;
             ^
1 error



Vamos testar seus conhecimentos em Fundações

Fundações profundas

A ABNT reconhece a execução dos seguintes tipos de estaca: madeira, aço, concreto pré-moldado, concreto moldado in loco, argamassa, calda de cimento ou qualquer combinação deles.

Com base no exposto, assinale a alternativa que define estaca metálica ou de aço.

A) Estaca armada e preenchida com argamassa de cimento e areia, moldada in loco e executada por perfuração rotativa ou rotopercussiva, revestida integralmente, no trecho em solo, por um conjunto de tubos metálicos recuperáveis.

B) Estaca executada por perfuração do solo com uma sonda ou piteira e revestimento total com camisa metálica, realizando-se gradativamente o lançamento e apiloamento do concreto, com retirada simultânea do revestimento.

C) Estaca cravada, constituída de elemento estrutural metálico produzido industrialmente, podendo ser de perfis laminados ou soldados, simples ou múltiplos, tubos de chapa dobrada ou calandrada, tubos com ou sem costura e trilhos.

D) Estaca moldada in loco, armada, executada por perfuração rotativa ou rotopercussiva e injetada com calda de cimento por um tubo com válvulas.

E) Estaca executada por perfuração do solo por trado mecânico, construída totalmente sem o emprego de revestimento ou de um fluido estabilizante.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte código JavaScript

const numeros = [33, 2, 8]; 
numeros.sort();
document.write(numeros[1]);

Qual é o resultado de sua execução?

A) 2

B) 8

C) 1

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

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

Evolução das estruturas

A alvenaria é das mais antigas técnicas de construção. É também das mais ricas e variadas. Assinale abaixo a opção que não corresponde às "unidades de alvenaria", ou seja, às peças que não constituem a formação da alvenaria:

Selecione a resposta:

A) Tijolos cerâmicos maciços.

B) Blocos de pedra.

C) Blocos de concreto.

D) Tijolos cerâmicos vazados.

E) Peças de madeira.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

Assinale a alternativa que apresenta uma justificativa para a importância dos rios:

A) A manutenção do equilíbrio ambiental local.

B) A disponibilidade somente de água potável.

C) A ausência de grandes eventos de inundação.

D) O desgaste da superfície das rochas ígneas.

E) O aumento da temperatura de forma pontual.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

O código abaixo é válido em Python?

nome1 = "ALBERTO"
nome2 = 'FERNANDA'
print(nome1)
print(nome2)

A) Sim

B) Não
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ó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

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



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