O documento apresenta 5 exercícios de programação em Java: 1) Exibir "Hello World"; 2) Converter minutos para horas; 3) Verificar nomes duplicados em uma lista; 4) Simular jogo de cartas entre jogadores; 5) Implementar classes Jogador e Carta para o jogo.
2. Hello World
• A aplicação deve exibir no console os dizeres: “Hello
World”.
• A aplicação deve encerrar com sucesso em seguida.
3. public class Main {
public static void main(String[] args) {
System.out.print("Hello World");
System.exit(0);
}
}
4. Calculando horas
• A aplicação deve realizar as seguintes conversões de minutos para horas:
1. 60 minutos
2. 5 minutos
3. 55 minutos
4. 99 minutos
5. 110 minutos
6. 1450 minutos
• A lógica de exibição dos resultados deverá ser:
A. Se a conversão resultar em uma hora exata, exibir o resultado como: 1 hora, 2 horas, 3 horas. Atenção para o plural!
B. Se a conversão resultar em um valor inferior a uma hora completa, deverá exibir os valores em minutos, como: 1
minuto, 20 minutos, 30 minutos.
C. Se a conversão resultar em um valor superior a uma hora completa, sendo um valor não exato, deverá exibir a hora
abreviada, conforme os exemplos: 1h 20 min, 3h 10 min.
D. Se os minutos resultantes da conversão não exata forem superiores a 3/4 de hora, deverá ser exibido a quantidade de
minutos faltantes para a próxima hora completa. Exemplo: 75 minutos ficaram “1h 15 min”, já 175 minutos ficariam “5
min para 3 h"
5. package br.org.andresalla;
public class Main {
public static void main(String [] args) {
conversao(60);
conversao(5);
conversao(55);
conversao(99);
conversao(110);
conversao(1450);
}
public static void conversao(int minutos) {
int resto = minutos % 60;
int horas = minutos / 60;
if (resto == 0) {
if (horas == 1) {
System.out.println(horas + " hora");
} else {
System.out.println(horas + " horas");
}
} else if (horas == 0) {
if (minutos == 1) {
System.out.println(minutos + " minuto");
} else {
System.out.println(minutos + " minutos");
}
} else if (resto >= 45) {
int falta = 60 - resto;
System.out.println(falta + " min para " + (horas + 1) + "h");
} else {
System.out.print(horas + " h " + resto + "min");
}
}
}
•
6. Lista de Nomes
• A aplicação deverá receber em seu método principal uma
lista de nomes.
• A aplicação deverá varrer a lista buscando por nomes
repetidos.
• Caso encontre algum nome repetido, deverá exibi-lo
como: “Fulano encontra-se em duplicidade”
• Caso não haja nenhum nome repetido, deverá exibir a
mensagem “Registros verificados com sucesso”
7. package br.org.andresalla;
public class Main {
public static void main(String[] args) {
String[] nomes = {"André", "Paulo", "Vanessa", "André", "João"};
String[] nomesRepetidos = new String[nomes.length];
for (int i = 0; i < nomes.length; i++) {
String nome = nomes[i];
for (int j = i + 1; j < nomes.length; j++) {
String proximo = nomes[j];
if (nome == proximo) {
if (!isJaAdicionado(nome, nomesRepetidos)) {
int lastPos = ultimaPosicao(nomesRepetidos);
if (lastPos >= 0) {
nomesRepetidos[lastPos] = nome;
}
}
}
}
}
if (contemNomes(nomesRepetidos)) {
for (int i = 0; i < nomesRepetidos.length; i++) {
if (nomesRepetidos[i] == null) {
break;
}
System.out.println(nomesRepetidos[i] + " encontra-se em duplicidade");
}
} else {
System.out.println("Registros verificados com sucesso");
}
}
…
8. public static boolean contemNomes(String[] nomes) {
for (int i = 0; i < nomes.length; i++) {
if (nomes[i] != null) {
return true;
}
}
return false;
}
public static int ultimaPosicao(String [] nomes) {
for (int i = 0; i < nomes.length; i++) {
if (nomes[i] == null) {
return i;
}
}
return -1;
}
public static boolean isJaAdicionado(String nome, String[] nomes){
for (int i = 0; i < nomes.length; i++) {
if (nomes[i] == nome) {
return true;
}
}
return false;
}
}
…
9. Jogando cartas
• A aplicação deve possuir os seguintes Modelos:
1. Jogador
2. Carta
• Cada jogador terá um nome, um identificador (ex: Jogador 1, 2, 3) e 3 cartas.
• Cada carta terá um valor de 1 a 10.
• Cada jogador receberá 3 cartas aleatórias.
• Cada jogador terá uma ação jogar, que selecionará uma carta aleatória das suas cartas, e colocará em jogo; assim como uma
ação receber carta, que adicionará uma carta à sua mão.
• A aplicação deve realizar a jogada de cada um dos jogadores, e, em seguida, verificar quem foi o ganhador.
• O ganhador é aquele que tirou a carta maior.
• No final, a aplicação deve exibir as seguintes mensagens no console:
A. Jogador X: 6
B. Jogador Y: 9
C. Ganhador: Jogador Y
10. package br.org.andresalla.models;
public class Carta {
int valor;
public Carta(int valor) {
if (valor > 10) {
this.valor = 10;
} else if (valor < 1) {
this.valor = 1;
} else {
this.valor = valor;
}
}
public int getValor() {
return valor;
}
}
11. package br.org.andresalla.models;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Jogador {
private int id;
private String nome;
private List<Carta> cartas;
public Jogador(int id, String nome) {
this.id = id;
this.nome = nome;
this.cartas = new ArrayList<Carta>();
}
public Carta jogar() {
Random gerador = new Random();
int index = gerador.nextInt(cartas.size());
return cartas.get(index);
}
…
12. public void adicionaCarta(Carta carta) {
if (cartas.size() < 3) {
cartas.add(carta);
}
}
public int getId() {
return id;
}
public String getNome() {
return nome;
}
}
…
13. package br.org.andresalla;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import br.org.andresalla.models.Carta;
import br.org.andresalla.models.Jogador;
public class Main {
public static void main(String[] args) {
List<Jogador> jogadores = new ArrayList<Jogador>();
jogadores.add(new Jogador(1, "André"));
jogadores.add(new Jogador(2, "Paulo"));
Random gerador = new Random();
for (Jogador jogador : jogadores) {
for (int i = 0; i < 3; i++) {
jogador.adicionaCarta(new Carta(gerador.nextInt(10) + 1));
}
}
…