DEV Community

Guilherme Manzano
Guilherme Manzano

Posted on

Lista de exercícios fáceis em Java — Parte 2

Hoje darei continuidade a resolução de mais seis exercícios básicos de programação. Caso vocês gostem, posso trazer mais artigos deste tipo no futuro. Vamos aos exercícios!

Alt Text

1. Faça um algoritmo para ler um número que é um código de usuário. Caso este código seja diferente de um código armazenado internamente no algoritmo (igual a 1234) deve ser apresentada a mensagem ‘Usuário inválido!’. Caso o Código seja correto, deve ser lido outro valor que é a senha. Se esta senha estiver incorreta (a certa é 9999) deve ser mostrada a mensagem ‘senha incorreta’. Caso a senha esteja correta, deve ser mostrada a mensagem ‘Acesso permitido’

Este programa é bem simples, vamos ter como variáveis do tipo int apenas o código e senha. Vamos inserir o Scanner para entrada de dados e exibir uma mensagem pedindo para o usuário inserir o código de acesso. Agora vamos criar um condicional if, pois caso o número digitado seja igual a “1234”, o programa pedirá a senha de acesso. Dentro haverá outro if, onde se a senha for igual a “9999”, o sistema vai exibir a mensagem de “Acesso Permitido”, caso contrário”, exibirá “Senha errada”. Se o código inserido for diferente de 1234, vai ser exibido uma mensagem de “código inválido”. Para terminarmos, vamos fechar o scanner com o comando close().

package artigosExercicios;

import java.util.Scanner;

public class Codigo {
    public static void main(String[] args) {
        int codigo, senha;
        Scanner entrada = new Scanner(System.in);

        System.out.print("Insira o código de acesso: ");
        codigo = entrada.nextInt();

        if (codigo == 1234) {
            System.out.print("Insira a senha de acesso: ");
            senha = entrada.nextInt();
            if(senha == 9999) {
                System.out.println("Acesso permitido");
            } else {
                System.out.println("Senha incorreta");
            }
        } else {
            System.out.println("Código incorreto");
        }

        entrada.close();
    }
}
Enter fullscreen mode Exit fullscreen mode

2. Número primo é aquele que só é divisível por ele mesmo e pela unidade. Fazer um algoritmo que determine e escreva os números primos compreendidos entre um intervalo fornecido pelo usuário.

Vamos começar declarando como int as variáveis inicio e fim (que será o intervalo dos números para se calcular os primos) e primo com o valor 0, que será nosso contador. Vamos chamar a classe Scanner e já colocar o fechamento close() no fim do código, para não esquecermos. Agora vamos pedir ao usuário o range de números, através das variáveis início e fim. Vamos criar um laço de repetição for, que receberá na variável i o primeiro número do intervalo e como condição de parada o último número do intervalo.

Dentro dele, nós teremos um outro laço condicional que vai testar se cada um dos números do intervalo é primo. Neste for, nós iremos dividir o número que está sendo testado por ele mesmo e todos os seus anteriores. Declarei uma variável j valendo 1 como condição inicial e a condição de parada será o valor do próprio i, ou seja, caso esteja testando o número 5, este laço irá pelos valores de 1, 2, 3, 4 e 5.

Para sabermos se um número é primo, basta dividirmos ele por ele mesmo e todos os seus antecessores. Se ele for divisível apenas por 1 ou por ele mesmo, então encontramos o número primo. Para testarmos esta condição, vamos criar um laço if que vai extrair o resto da divisão do valor i pelo j, se o resto for igual 0, significa que ele dividiu sem sobras e, assim, o contador primo recebera o valor +1 na sua memória. No fim do teste para todos os seus antecessores, se a variável primo for igual a 2, significa que encontramos um número primo! Agora vamos sair do laço de repetição interno, que está testando cada um dos números, e vamos criar um if que exibirá o valor encontrado (se primo for igual a 2) do número primo. Por fim, como a variável primo possui um número em seu interior, precisamos “limpar” ela para realizar um novo cálculo, então vamos atribuir o valor de 0 a ela, no final do laço for externo.

package artigosExercicios;

import java.util.Scanner;

public class Primos {
    public static void main(String[] args) {
        int inicio, fim, primo=0;

        Scanner entrada = new Scanner(System.in);
        System.out.print("Número inicial: ");
        inicio = entrada.nextInt();
        System.out.print("Número final: ");
        fim = entrada.nextInt();

        for (int i=inicio; i<=fim; i++) {
            for (int j=1; j<=i; j++) {
                if (i % j == 0) {
                    primo++;
                }
            }
            if (primo == 2) {
                System.out.println("O número " + i + " é PRIMO!");
            }
            primo = 0;
        }

        entrada.close();
    }
}
Enter fullscreen mode Exit fullscreen mode

A lógica deste exercício ficou um pouco complexa, não sei se consegui explicar de forma clara mas, se você fez o exercício de outra forma e conseguiu encontrar os números primos, também é valido! Esse é um daqueles exercícios que existem inúmeras formas diferentes de se resolver, o que vai mudar é o tamanho do código e o tempo de processamento pela JVM.

3. Escrever um programa que armazene um horário (hora, minuto e segundo) em variáveis, depois, determine e exiba a quantidade de segundos que se passaram desde as 0h00min0s e a quantidade de segundos que faltam para a meia-noite.

Vamos declarar as variáveis hora, minuto, segundo, passado e faltam como int. Vamos atribuir alguns valos para hora, minuto e segundo para testarmos. Em seguida, vamos criar a fórmula que calcula quanto tempo se passou até o momento (segundo + minuto*60 + hora * 3600). Para descobrir quanto falta para acabar o dia, a fórmula é subtrair 86400 (quantidade de segundos que tem em um dia) com o tempo que já passou. Nosso programa está pronto, basta exibir agora o resultado!

package exercicios;

public class Horas {
    public static void main(String[] args) {
        int hora, minuto, segundo, passado, faltam;

        hora = 3;
        minuto = 32;
        segundo = 54;

        passado = segundo + minuto*60 + hora*3600;
        faltam = 86400 - passado;

        System.out.println("Já se passaram " + passado + " segundos desde o início do dia");
        System.out.println("Faltam " + faltam + " segundos para terminar o dia");
    }
}
Enter fullscreen mode Exit fullscreen mode

4. Elabore um programa para armazenar uma medida de raio em metros, determinar e exibir o perímetro e a área de um círculo com esse raio, através das fórmulas: perímetro = 2 x 3.14159 x raio; área = 3.14159 x raio².

Vamos declarar como double o raio, perimetro e area, e atribuir algum valor ao raio para fazermos os cálculos. Em seguida, vamos criar as duas fórmulas que o enunciado nos mostra, e, depois, é só exibir na tela o resultado do cálculo da área e do perímetro.

package apostilaJava_parte1;

public class Pagina50 {
    public static void main(String[] args) {
        double raio, perimetro, area;
        raio = 4.3;

        perimetro = 2 * 3.14159 * raio;
        area = 3.14159 * raio * raio;

        System.out.println("O perímetro do círculo é: " + perimetro);
        System.out.println("Areá do círculo é: " + area);
    }
}
Enter fullscreen mode Exit fullscreen mode

5. Faça um algoritmo para ler 50 números e armazenar em um vetor VET, verificar e escrever se existem números repetidos no vetor VET e em que posições se encontram.

Este exercício é o mais difícil da lista, vamos realizar operações com vetores com laços de repetição aninhados. Vamos começar declarando nosso array de inteiros de 50 posições e, em seguida, chamar a classe Scanner (não se esquecendo de fechá-la com o close()). Agora vamos iniciar um valor for que vai percorrer as 50 posições do nosso array (de 0 a 49). Vamos exibir uma mensagem ao usuário pedindo que ele digite um número inteiro, que será armazenado na posição i do vetor. Para verificarmos se o número digitado é repetido, vamos criar um outro laço for (dentro do laço do array) utilizando a variável j, que também percorrerá as 50 posições do nosso array.

Agora, vamos colocar um condicional if dentro do laço, vamos verificar se o valor que foi digitado agora já está dentro do array, percorrendo cada uma das suas opções, e verificar se o i é diferente do j (pois se os dois valores forem iguais, ele vai deixar passar como se o número tivesse sido digitado, causando uma brecha em nossa lógica). Caso o número seja igual de fato, vamos exibir ele na tela e lançar um break, para não ficar repetindo a mensagem até o for completar de percorrer todas as posições do array. Pronto! Assim concluímos este exercício trabalhando com manipulação de array.

package artigosExercicios;

import java.util.Scanner;

public class Vet {
    public static void main(String[] args) {
        int VET[] = new int[50];

        Scanner entrada = new Scanner(System.in);

        for(int i=0; i<50; i++) {
            System.out.print("Digite o valor da posição " + i + ": ");
            VET[i] = entrada.nextInt();
            for(int j=0; j<50; j++) {
                if(VET[i]==VET[j] && i!=j) {
                    System.out.println("o número " + VET[i] + " é repetido!");
                    break;
                }
            }
        }

        entrada.close();
    }
}
Enter fullscreen mode Exit fullscreen mode

6. O custo de um carro novo ao consumidor é a soma do custo de fábrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). Supondo que o percentual do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo para ler o custo de fábrica de um carro, calcular e escrever o custo final ao consumidor.

Este programa é bem simples, vamos declarar o precoCarro e o precoFinal como double, declarar a classe Scanner e pedir para o usuário inserir o preco de fábrica do carro, guardando este dado na variável precoCarro. Por fim, vamos calcular o precoFinal (precoCarro + precoCarro*0.28 + precoFinal*0.45) e e exibí-lo na tela!

package artigosExercicios;

import java.util.Scanner;

public class CarroNovo {
    public static void main(String[] args) {
        double precoCarro, precoFinal;
        Scanner entrada = new Scanner(System.in);

        System.out.print("Digite o valor de fábrica do veículo: R$ ");
        precoCarro = entrada.nextDouble();

        precoFinal = precoCarro + precoCarro*0.28 + precoCarro*0.45;

        System.out.println("O preço que o consumidor deve pagar pelo veículo é de: R$ " + precoFinal);
        entrada.close();
    }
}
Enter fullscreen mode Exit fullscreen mode

Com este exercício do carro, terminamos mais uma listinha de exercícios, desta vez trouxe mais exercícios bem básicos e um de vetor e outro de primos que são um pouco mais complexos. Se gostaram deste tipo de resolução de exercícios posso trazer novos desafios nos próximos artigos, também aceito sugestões de exercícios para resolver para os próximos artigos.

Top comments (4)

Collapse
 
bitcomputer profile image
bitcomputer programming

Pode me dizer onde voce consegue essas propostas de exercicios?obrigado

Collapse
 
guilhermemanzano profile image
Guilherme Manzano

Olá! Eu peguei estes exemplos na aula da faculdade, sobre Orientação a Objetos

Collapse
 
uesleivarg profile image
UesleiVarg

Olá!!!
como faço para ele pedir para repetir o processo de digitar a senha ? até o usuário digitar ela corretamente;
Eu fiz assim isso com repetir o usuário:

package contador01;

import java.util.Scanner;

public class Contador01 {

public static void main(String[] args) {

    Scanner r = new Scanner(System.in);

    int codArm = 5678, codUsu = 0;
    int senha = 7777, senhaUsu = 0;
    String resp = null;

    do {

        System.out.println("digite o codUsu");
        codUsu = r.nextInt();

        if (codUsu != codArm) {
            System.out.println("Usúario inválido!");
            System.out.println("Deseja tentar novamente ?");
            System.out.println("S/N");
            resp = r.next();
        }

        if (codUsu == codArm) {


            System.out.println("Digite a senha: ");
            senhaUsu = r.nextInt();


            if (senhaUsu != senha) {
                System.out.println("Senha incorreta!");
            } 



            else {
                System.out.println("Acesso permitido!");
            }
            break;

        }

    } while (resp.equals("S"));
         {
          if (resp != "N") {
            return;
        }
    }
 }
Enter fullscreen mode Exit fullscreen mode

}

Collapse
 
julianoscg profile image
Juliano Silva

Eu fiz assim:

import java.util.Scanner;

public class Exercicio21 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        int senha, codigo;
        boolean validaCodigo = false;
        boolean validaSenha = false;

        while(!validaCodigo){
            System.out.print("Entre com o código: ");
            codigo = scan.nextInt();
            if(codigo == 1234){
                validaCodigo = true;
            } else{
                System.out.println("Usuário inválido!");
            }
        }
        while(!validaSenha){
            System.out.print("Entra com a senha: ");
            senha = scan.nextInt();
            if(senha == 9999){
                validaSenha = true;
            }
            else{
                System.out.println("Senha incorreta!");
            }
        }
        System.out.println("Acesso liberado!");
    }
}

Enter fullscreen mode Exit fullscreen mode