Sunteți pe pagina 1din 5

Lista de Exerccios Java - Prof.

Marcio Belo
*** CONSOLE 1. [IMPERIAL] No sistema imperial so utilizadas as seguintes medidas lineares: 1 p = 12 polegadas 1 jarda = 3 ps 1 milha = 1760 jardas Considerando que 1 polegada equivale a 25,3995 milmetros no sistema mtrico, faa o programa que converta um valor informado em centmetros para cada uma das unidades do sistema imperial citadas acima. 2. Escreva um programa que mostre no console uma pirmide de nmeros, com um nmero de linhas entre 1 e 9, fornecido pelo usurio. Caso o nmero esteja fora do limite, mostrar mensagem de erro e solicitar novamente o nmero. Por exemplo, se o nmero de linhas for 4, o resultado ser:
1 121 12321 1234321

3. [ADIVNUM] O jogo Adivinha Nmero consiste de dois participantes que devem adivinhar um nmero sorteado de 1 a 1000. A cada turno, um jogador tem a chance de tentar adivinhar o nmero. Ao errar o palpite, o computador indica se o nmero secreto maior ou menor e passa a vez para o oponente. Seu programa dever perguntar o nome dos dois jogadores e sortear um deles para iniciar o jogo. Use a funo esttica random() da classe Math contida no pacote java.util; *** INCIO DE CLASSES 4. [CalcINSS] Faa um programa que instancie um vetor de 10 elementos da classe funcionrio. Cada funcionrio armazena as informaes: matrcula, nome e salrio. No programa principal da aplicao, leia os dados de 10 funcionrios e preencha cada uma das posies do vetor com as instncias da classe Funcionrio (objetos). Na classe funcionrio, crie um mtodo chamado calcularInss que, ao ser invocado, retorna o valor do INSS a ser pago, considerando nas seguintes faixas: at 720,00 paga 7,65%; de 720,01 at 1200,00 paga 9%; e de 1200,01 at 2400,00 paga 11%. Faa com que seu programa exiba o valor do INSS a ser pago de cada funcionrio, invocando esse mtodo em cada um deles. 5. [CavalinhoDoBozo] O jogo de corrida de cavalos do BOZO tem 3 cavalos: o pretinho, o branquinho e o malhadinho, todos 3 pertencentes classe cavalo. Um cavalo armazena uma string com o nome do cavalo, onde somente sero vlidas as strings pretinho, branquinho ou malhadinho, uma string que ser seu avatar (B> caso o cavalo seja branco, M> se for o malhado e P> se for o preto), e a distncia atual que ele j conseguiu percorrer (nmero real). Todos esses atributos so privados. Ao ser criado um dos trs cavalos, indicamos o nome do cavalo (entre os vlidos) e a distncia percorrida iniciada com zero. A classe cavalo implementa trs mtodos: 1) o construtor, conforme descrito acima; 2) a correr, que sorteia um nmero real entre 0 e 1, acumula esse valor a sua distncia percorrida (nmero real) e chama a funo privada mostrar do objeto, e retorna a distncia atual j percorrida pelo cavalo; e 3) o mtodo privado mostrar, que exibe no console um linha com o nome do cavalo e, ao lado, o caractere avatar dele, distante n caracteres da posio do dois pontos, sendo n a parte inteira da distncia percorrida. Considerando a distncia zero, a situao inicial da tela ser a seguinte: BRANQUINHO: B> MALHADINHO: M> PRETINHO: P>

Lista Exerc Java | Pgina 1 de 5

O programa principal dever: criar os trs cavalos, e iniciar um repetio enquanto nenhum dos cavalos tenha atingido a linha de chegada (60 caracteres da largada). Em cada repetio, o mtodo correr de cada um dos 3 cavalos dever ser invocado e devem ser executadas 25 quebras de linhas, para forar a limpeza do console. Ao final, o cavalo campeo deve ser exibido e o programa finalizado. Exemplo: BRANQUINHO: B> MALHADINHO: M> PRETINHO: P> BRANQUINHO GANHOU !!! 6. [ViacaoTartaruga] A viao tartaruga possui um frota de 12 veculos. Cada veculo tem uma capacidade nica de passageiros, um estado de origem (RJ, SP, MG, etc.) e um de destino. Quando cada veculo for criado, deveremos iniciar essas variveis somente pelo construtor da classe Veculo. A classe veculo deve implementar o mtodo comprar, que aloca um dos assentos de um veculo (se disponvel), retornando um valor lgico, indicando se houve sucesso ou no, o mtodo getNumAssentosDisponiveis, que retorna o nmero de assentos ainda no vendidos, e o mtodo getNumAssentos, que retorna o total de assentos que o veculo dispe. Faa um programa principal que crie a frota de veculos num array de 12 posies, com valores fictcios e diferentes entre si para cada objeto. A partir de ento, inicie um repetio que exibe a lista de ocupao de cada nibus (mostrada abaixo) e espere no console que o usurio digite o nmero do nibus. Ao digitar o nmero do nibus, o programa dever vender um assento e mostrar novamente a lista de ocupao. Quando o usurio digitar 0, o programa deve ser finalizado: 01: RJ-SP (5 assentos disponveis de 20) 02: MG-RS (10 assentos disponveis de 15) 03: MS-RO (3 assentos disponveis de 21) 04: BA-SE (6 assentos disponveis de 10) 05: SC-RJ (1 assentos disponveis de 20) 06 AM-AC (0 assentos disponveis de 60) 07: AL-CE (20 assentos disponveis de 20) 09: RR-GO (14 assentos disponveis de 45) 10: RN-PE (1 assentos disponveis de 30) 11: SP-BA (30 assentos disponveis de 40) 12: SC-ES (0 assentos disponveis de 10) 7. [ObjUnico] Podemos construir uma classe que tenha uma nica instncia que facilmente acessvel. Essa classe tem que garantir que nenhuma outra instncia dela pode ser criada. Construa a classe Unica que atenda a descrio acima. A classe Teste, que no deve ser modificada, contm o mtodo main responsvel por test-la. Observe que todas as instncias da classe Unica criadas no mtodo main da classe Teste so referncias para o mesmo objeto.
class Teste { public static void main(String[] args) { Unica u = Unica.pegaInstancia(); Unica v = Unica.pegaInstancia(); Unica x = Unica.pegaInstancia(); } System.out.println((u == v) && (x == v)); // Deve retornar true

} 8. [ContaCorrente] Uma Conta tem um nmero, um saldo e um cliente principal e, opcionalmente, um segundo cliente secundrio (conta conjunta). As classes ContaNormal e ContaEspecial, so derivadas de Conta. Na conta normal, o saldo nunca pode ser menor que zero. Na conta especial, o saldo no pode ser negativo, contanto que dentro de um limite de crdito especificado. Ambas devem ter construtores, para indicar o nmero da conta, o cliente principal e, para o caso de conta especial, indicar tambm o limite.
Lista Exerc Java | Pgina 2 de 5

Um Cliente tem um cpf e um nome, e a classse deve possuir um construtor que define os valores iniciais desses dois atributos de instncia. Alm disso, o atributo cpf teve ter acesso externo de leitura e o nome de escrita e leitura. A classe conta deve implementar um mtodo depositar, que acresce ao saldo da conta o valor indicado pelo parmetro. A classe conta deve definir um mtodo abstrato sacar, a ser implementado na duas subclasses, de acordo com as especificidades de cada caso. Os atributos nmero da conta, saldo e o cliente principal so de somente leitura por acesso externo. Os atributos cliente secundrio e limite (para o caso de conta especial) tm acesso externo de leitura e escrita. As classes devem ser encapsuladas. Um analista de testes escreveu o cdigo abaixo, para testar algumas assertivas do cdigo. O cdigo deve compilar e retornar OK para os 3 testes.
public class Main { public static void main(String[] args) { if(Teste1()) System.out.println("Teste1: OK!"); else System.out.println("Teste1: ERRO!"); if(Teste2()) System.out.println("Teste2: OK!"); else System.out.println("Teste2: ERRO!"); if(Teste3()) System.out.println("Teste3: OK!"); else System.out.println("Teste3: ERRO!"); } // Conta normal no pode ter saldo negativo public static boolean Teste1() { Cliente cli1=new Cliente(123456789,"Joo"); Cliente cli2=new Cliente(987654321,"Ana"); ContaNormal conta1=new ContaNormal(1,cli1); conta1.setClienteSecudanrio(cli2); conta1.depositar(100); boolean result=conta1.sacar(150); // Deve retornar false return !result; } // Conta especial pode ter saldo negativo, at o limite public static boolean Teste2() { Cliente cli1=new Cliente(987654321,"Ana"); cli1.setNome("Ana Beatriz"); ContaEspecial conta1=new ContaEspecial(1,cli1,200); conta1.depositar(100); boolean result=conta1.sacar(150); // retorna true return result; } // Conta especial pode ter saldo negativo, at o limite public static boolean Teste3() { Cliente cli1=new Cliente(987654321,"Ana"); ContaEspecial conta1=new ContaEspecial(1,cli1,200); conta1.depositar(100); boolean result=conta1.sacar(350); // deve retornar false return !result; } }

*** POLIMORFISMO 9. [Hortifruti] Uma loja de hortifruti colocou um servio de venda pela internet. A classe Cesta contm um lista de, no mximo, 12 produtos. Cada produto pode ser de um dos tipos (subclasses) derivados de Produto. Cada uma das subclasses define um valor fixo que vale para todos os objetos daquela classe e corresponde ao preo de cada unidade do produto. Na classe Cesta, o mtodo adicionarProduto coloca um novo produto na cesta. Voc dever usar uma varivel de instncia para controlar quantos itens j esto ocupados. Quando estiver cheio, opcionalmente, lance um exceo personalizada. O mtodo calcularTotal faz o somatrio dos produtos preo vezes quantidade de cada um dos produtos que estejam na cesta. O mtodo listarCesta mostra cada um dos itens da cesta, indicando o tipo de produto (banana, maa, etc.), o preo unitrio e a quantidade; no final mostre o valor total da cesta. Perceba que a classe Produto
Lista Exerc Java | Pgina 3 de 5

abstrata (est em itlico), bem como o mtodo getPreco. Faa um programa principal que oferea um menu de opes ao usurio: 1. colocar produto na cesta (usurio deve indicar o tipo e a quantidade); 2. mostrar o contedo da cesta e, ao final, o valor total da cesta; e 3. limpar a cesta. Considere o modelo mostrado abaixo:

*** EXCEES 10. [FuncExc] Crie um classe POJO para a entidade Funcionrio de um sistema de RH. Essa classe ter 3 atributos privados: matrcula do tipo inteiro, somente leitura; nome do tipo String, leitura e gravao e salrio do tipo double, leitura e gravao. Ao criar um objeto de Funcionrio, a classe atribui automaticamente um novo cdigo para o novo objeto. O atributo matrcula tem valor exclusivo para cada funcionrio. Ao tentar colocar um nome que tenha mais do que 40 caracteres, lanar a exceo do sistema IllegalArgumentException, indicando na mensagem o erro ocorrido. Ao tentar indicar um salrio menor que o salrio mnimo (350 reais), lanar um exceo personalizada, herdando de IllegalArgumentException, chamada ViolacaoCltException, que recebe no construtor uma mensagem descritiva do erro ocorrido e o cdigo do artigo da CLT que cita a proibio. Aps a criao do objeto Funcionrio, caso se tente colocar um salrio 10% maior que o anterior, lanar a exceo AumentoAbsurdoException, que herda de RuntimeException. Faa um programa principal que trate todas as excees. *** COLEES 11. [Prompt] O programa Prompt armazena uma lista de nomes. Como o prprio nome sugere, ele recebe comandos por um linha no console aps o prompt >. Existem os seguintes comandos: (+) insere o nome recebido como argumento na coleo; (-) exclui o primeiro nome encontrado da coleo; (L) gera a lista de nomes armazenados. Utilize a coleo mais adequada e de melhor performance. Exemplos de comandos: >+MARCIO >+ANA >+LEANDRO >+ANA >L 1. ANA 2. ANA 3. LEANDRO
Lista Exerc Java | Pgina 4 de 5

4. MARCIO >-ANA >L 1. ANA 2. LEANDRO 3. MARCIO > 12. [ColecaoDVD] Uma pessoa possui uma coletnea de DVDs. Para organiza-la, definiu uma classe DVD com trs campos: ttulo, gnero e o nmero da caixa (case de cds/dvds) onde a mdia guardada. O campo gnero possui um domnio de valores possveis, entre eles Ao, Romance, Fico, etc. O programa deve apresentar um menu de opes que permite incluir, alterar, excluir ttulo, e listar em ordem pelos dois primeiros campos. 13. [CasesDVD] Incremente o programa anterior, criando uma nova opo para listar os ttulos contidos em uma determinada caixa. Crie uma coleo que, para cada nmero de caixa, armazene os ttulos (DVDs) que esto guardados nela. Use uma coleo do tipo Map, que mais adequada para este caso.

Lista Exerc Java | Pgina 5 de 5

S-ar putea să vă placă și