Ir ao conteúdo
  • Cadastre-se
Gabriel T.I

Java Faça um programa que deverá ler e armazenar na memória um as informações das pessoas.

Recommended Posts

Bom dia Galera, estou tendo dificuldade com algumas partes dos meus códigos pois mal comecei a estudar java e já tenho essa lista de 4 exercícios para responder, fiz os códigos até onde eu consegui, porém todos estão incompletos, faltando alguns detalhes, alguém pode me ajudar aí com as partes incompletas dos códigos ? Fico muito grato a quem puder pois meu prazo é curto para entregar essa lista !

 

Segue aí os exercícios com os códigos:

 

1.Faça um programa que deverá ler e armazenar na memória um as informações das pessoas. Deverá ser criada uma classe Pessoa com os atributos nome, data de nascimento, peso e altura. Crie os métodos públicos necessários para sets e gets e também um método para imprimir todos dados de uma pessoa. Crie um método para calcular a idade da pessoa. Crie um método para calcular o índice de massa corporal (IMC) de uma pessoa seguindo a seguinte fórmula
IMC=peso/〖altura〗^2
Deverá ser criada uma classe de teste para testar a chamada de todos os métodos.

(neste problema consegui fazer a classe pessoa mas faltando algumas coisas que esta comentada no código, e não consegui fazer a classe teste)

“classe pessoa”:

 

public class Pessoa{

private static String nome;
private static String dataNascimento;
private static float altura;
private static float peso;
private static float idade;

public static String getNome() {
	return nome;
}

public void setNome(String nome) {
	Pessoa.nome = nome;
}

public static String getDataNascimento() {
	return dataNascimento;
}

public void setDataNacimento(String dataNacimento) {
	Pessoa.dataNascimento = dataNacimento;
}

public static float getAltura() {
	return altura;
}

public void setAltura(float altura) {
	Pessoa.altura = altura;
}

public static float getPeso() {
	return peso;
}

public void setPeso(float peso) {
	Pessoa.peso = peso;
}

public static float getIdade() {
	return idade;
}

public static void setIdade(float idade) {
	Pessoa.idade = idade;
}

public static Scanner entrada;
public static float imc;

public static void main(String[] args) {
	entrada = new Scanner(System.in);
	
	System.out.println("Digite seu nome: ");
	nome = entrada.nextLine();
	
	System.out.println("Digite sua data de nacimento: ");
	dataNascimento = entrada.nextLine();

	System.out.println("Digite seu Peso: ");
	peso = entrada.nextFloat();
	
	System.out.println("Digite sua Altura: ");
	altura = entrada.nextFloat();
}

public void imc() {
	imc = altura * altura;
	imc = peso / imc;
}

// preciso de um metodo para calcular a idade do usuario que seria a data atual - a data de nacimento.
// alocando na variavel idade.

public static void main1(String[] args) {
	System.out.println("Seu nome e: " + nome);
	System.out.println("Sua altura e: " + altura);
	System.out.println("Seu peso e: " + peso);
	System.out.println("Sua idade e: " + idade);
	System.out.println("Seu IMC : " + imc);
}
}
]

2- Escreva uma classe cujos objetos representam alunos matriculados em uma disciplina. Cada objeto dessa classe deve guardar os seguintes dados do aluno: matrícula, nome, 2 notas de prova e 1 nota de trabalho. Escreva os seguintes métodos para esta classe: calculaMedia - calcula a média final do aluno (cada prova tem peso 2,5 e o trabalho tem peso 2) calculaFinal calcula quanto o aluno precisa para a prova final (retorna zero se ele não for para a final). Deverá ser criada uma classe de teste para testar a chamada de todos os métodos.

( Neste eu consegui fazer a classe alunos, mas falta a classe calculaMedia , calculaFinal e a classe teste)

“Classe aluno”:

 

public class Alunos {

	private static String matricula;
	private static String nome;
	private static float nota1;
	private static float nota2;
	private static float trabalho;
	
	public static String getMatricula() {
		return matricula;
	}
	public void setMatricula(String matricula) {
		Alunos.matricula = matricula;
	}
	public static float getNota1() {
		return nota1;
	}
	public void setNota1(float nota1) {
		Alunos.nota1 = nota1;
	}
	public static String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		Alunos.nome = nome;
	}
	public static float getNota2() {
		return nota2;
	}
	public void setNota2(float nota2) {
		Alunos.nota2 = nota2;
	}
	public static float getTrabalho() {
		return trabalho;
	}
	public void setTrabalho(float trabalho) {
		Alunos.trabalho = trabalho;
	}
}
]

 

3-Crie uma classe denominada Elevador para armazenar as informações de um elevador dentro de um prédio. A classe deve armazenar o andar atual (térreo = 0), total de andares no prédio (desconsiderando o térreo), capacidade do elevador e quantas pessoas estão presentes nele. A classe deve também disponibilizar os seguintes métodos:
construtor : que deve receber como parâmetros a capacidade do elevador e o total de andares no prédio (os elevadores sempre começam no térreo e vazio);
Entra : para acrescentar uma pessoa no elevador (só deve acrescentar se ainda houver espaço);
Sai : para remover uma pessoa do elevador (só deve remover se houver alguém dentro dele);
Sobe : para subir um andar (não deve subir se já estiver no último andar);
Desce : para descer um andar (não deve descer se já estiver no térreo);
Encapsular todos os atributos da classe (criar os métodos set e get).


Deverá ser criada uma classe de teste para testar a chamada de todos os métodos.

 

(Este eu não tenho a menor ideia de como fazer, não conseguir fazer nada dele !! Se alguém puder ajudar :tw_confused:).

 

4-Crie uma classe Televisao e uma classe ControleRemoto que pode controlar o volume e trocar os canais da televisão. O controle de volume permite:
• aumentar ou diminuir a potência do volume de som em uma unidade de cada vez;
• aumentar e diminuir o número do canal em uma unidade
• trocar para um canal indicado;
• consultar o valor do volume de som e o canal selecionado.

(Este eu consegui fazer as duas classes (Televisao e ControleRemoto) mas esta faltando algumas coisas que esta comentado nos codigos)

 

“Classe televeisao”:

 

public static int getCanal() {
	return canal;
}
public static void setCanal(int canal) {
	Televisao.canal = canal;
}
public static int getVolume() {
	return volume;
}
public static void setVolume(int volume) {
	Televisao.volume = volume;
}

public void canal() {
	System.out.println(nextInt(99));
	// Nao sei se esta correto mas fiz esse metodo para limita os canais a no maximo 99.
	//necessito tambem de um metodo para quando o usuario por + aumentar o numeor do canal e - diminuir.
	// para ele ter duas opções ou pelo numero certo dele ou pelo + e -.
}

public void volume() {
	System.out.println(nextInt(100));
	// mesma coisa aqui mas com o volume limitado a 100.
}

private char[] nextInt(int i) {
	return null;
}
}
]

“classe controle remoto”:

Exercício 4;

 

public class ControleRemoto {
private static int consulta;
private static Scanner entrada;

public static int getConsulta() {
	return consulta;
}

public static Scanner getEntrada() {
	return entrada;
}

public static void setEntrada(Scanner entrada) {
	ControleRemoto.entrada = entrada;
}

public static void setConsulta(int consulta) {
	ControleRemoto.consulta = consulta;
}

public static void main(String[] args) {
	setEntrada(new Scanner(System.in));
	
//O usuario ira colocar as informações ex: numero do canal que deseja trocar,
// se deseja aumentar ou diminuir o volume (obs: tem dois jeitos de trocar de canal pelo numero ou por + e -)
}	

// um metodo para imprimir a confirmacao da entrada ex: voce trocou para o canal 5 , 
// o volume da tv esta em 12.(que seria a parte de consulta)
}
]

 

Bom galera, foi até aí que consegui fazer os códigos, sei que talvez seja até bastante as partes incompletas porém preciso entregar logo e o prazo está acabando, espero que alguém possa me ajudar  :tw_fearful:, Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBservando o exercício 1 , seguem algumas dicas.

 

Evite usar static em atributos e métodos.
Para a maioria das situações, não precisa usar static. então a dica é, na dúvida, não declare como static. O fato de você declarar praticamente tudo como static demonstra que você ainda não domina esse conceito. Estude mais sobre ele ok ? Só use static se tiver um bom motivo para tornar alguma coisa static.

 

No programa principal você não instanciou pessoa alguma. Recomendo criar uma nova pessoa. Verifique o método construtor da pessoa.

 

O método para calcular IMC deve ser um método da classe pessoa e nao um método público. 

A ideia seria mais ou menos assim


 

public class Pessoa {
  /* definicoes de atributos e métodos da classe pessoa ... que você já fez */
  .
   .
    .
  /* adicione esse método aqui */ 
  public float  imc() { 
       return this.peso / (this.altura * this.altura) ;
}

com a definição desse método assim, basta criar uma pessoa no programa principal           

  Pessoa umCaraMagro = new Pessoa();
  umCaraMagro.setNome("Gabrielzinho");
  umCaraMagro.setPeso(60.0);
  umCaraMagro.setAltura(1.78);
  System.out.prinln("A pessoa "+umCaraMagro.getNome()+
                     " pesa "+umCaraMagro.getPeso()+
                     " e mede "+umCaraMagro.getAltura()+
                     " o que dá um IMC de "+umCaraMagro.imc() ) ;

Quanto a idade, temos um dilema aí que você precisa resolver. É uma opção pessoal sua. Existem algumas alternativas e seu programa sugere pelo menos duas delas. O problema é que você ficou no meio. Ou usa uma forma ou usa a outra.

Então vejamos: tem duas formas de você guardar a idade de uma pessoa. Ou você cria um atributo/campo com o idade da pessoa (que você fez) e registra a idade dela, ou ... você cria um campo data de nascimento (que você também fez) e CALCULA a idade da pessoa toda vez que quiser saber a idade dela.

Existem vantagens e desvantagens em cada  uma das abordagens.

 

Se você cria um campo com  a idade, basta ir ver o valor da idade nesse campo e tá resolvido. No caso o método getIdade(), que você já fez, resolve. Simples e prático. Só tem um problema ... e quando o tempo passar ? Qual será a idade da pessoa ? Alguma coisa tem que de ano em ano , em algum mês, num certo dia, mudar a idade da pessoa para idade + 1. Para tanto precisaríamos saber o mês e o dia em que a pessoa nasceu, além da idade. Ihhh, tá começando a complicar ...

 

Se você cria um campo com a data de nascimento (ano, mês, dia) , fica mais fácil e prático calcular a idade. Basta criar um método chamado calcIdade() que em vez de simplesmente pegar o campo idade, calcula a idade baseando-se no ano, mês, dia de nascimento e o ano, mês, dia corrente. A vantagem desse método é que sempre se calcula a idade correta no momento em que se precisa fazer a conta. Não precisa ficar atualizando a idade o tempo todo. Só calcula quando precisa. Tem ideia de como fazer um método que dado o dia, mês, ano de nascimento e o dia, mês, ano atual calcula a idade de ume pessoa ? Ora, se tenho a data de nascimento (dia, mês, ano) de uma pessoa, não preciso ter um campo de idade da pessoa, concorda ? E para facilitar ainda mais, talvez seja melhor usar um campo para dia, outro para mês e outro para ano, em vez de uma string com a data de nascimento. Facilita ter os campos separados para fazer contas, calcular inclusive dias entre uma data e outra e até em que dia da semana uma data cai. Pense nisso.

 

 

Outra dica. 

Dentro da classe, ao referenciar o próprio objeto, prefira usar o termo this em vez do nome da classe. Isso facilita a manutenção do programa no futuro. Não faz diferença na lógica porém é um hábito bom de se cultivar para quem pensa em seguir a carreira profissional de programador Java (que inclusive tem forte demanda de programadores bons).

Por exemplo, você usa 

public void setNome(String nome) {
	Pessoa.nome = nome;
}

/* prefira usar assim */ 
public void setNome(String nome) {
	this.nome = nome;
}



Recomendo estudar mais a estrutura do programa Java. O fato de você ter declarado dos "mains" no mesmo fonte demonstra que esse ponto está meio fraco e precisa de mais exercício.

 

Se me permite uma dica, use o http://repl.it para testar e compartilhar seus programas em Java. É gratuito e facilita. Não é tão bacana quanto o Eclipse e o Netbeams mas quebra um galhão.

 

Outra dica, instale o teamviewer no seu computador. Assim, quando tiver uma dificuldade maior no seu código, você pode pedir para alguém dar uma olhada via teamviewer. Eu tenho dado dicas assim  e agiliza um bocado.

 

Essas são apenas observações quanto ao exercício 1. Portanto, outra dica. QUando tiver uma lista de exercícios, abra um tópico para cada exercício. Facilita ao ajudador responder e também facilita para você entender.

 

adicionado 34 minutos depois
Em 12/04/2018 às 07:42, Gabriel T.I disse:

2- Escreva uma classe cujos objetos representam alunos matriculados em uma disciplina. Cada objeto dessa classe deve guardar os seguintes dados do aluno: matrícula, nome, 2 notas de prova e 1 nota de trabalho. Escreva os seguintes métodos para esta classe: calculaMedia - calcula a média final do aluno (cada prova tem peso 2,5 e o trabalho tem peso 2) calculaFinal calcula quanto o aluno precisa para a prova final (retorna zero se ele não for para a final). Deverá ser criada uma classe de teste para testar a chamada de todos os métodos.

:


Aqui você fez praticamente nada. Apenas declarou a classe com os atributos e novamente exagerou no uso de static. Pode tirar todos os static dai. Não é necessário

 

Novamente você usou o nome da classe para referenciar-se a seus atributos. Prefira usar this. em vez do nome da classe.

 

Esse seu comentário abaixo é preocupante ...

Em 12/04/2018 às 07:42, Gabriel T.I disse:

Neste eu consegui fazer a classe alunos, mas falta a classe calculaMedia , calculaFinal e a classe teste)

 

 

Aqui você está misturando e confundindo os conceitos de classe com método.

calculaMedia e calculaFinal são métodos e não classes

.

A classe "teste"  na verdade é o programa principal, que você sequer tentou fazer. Precisa se esforçar mais aqui.

 

Voltando ao método que calcula a média. Segundo o enunciado a média é ponderada entre 3 notas, 2 notas e um trabalho.

Então a média seria 2.5* nota1 + 2.5*nota2 + 2*trabalho , tudo isso somado pela soma dos pesos que é 2.5+2.5+2 = 7

então ... consegue escrever o método agora ? Tente escrevê-lo e se tiver dificuldade me avise.

 

Agora o método que calcula quanto o aluno precisa para a prova final. Esse cálculo precisa de duas informações que não temos:

1 - Qual é a média necessária para passar direto sem final ? 

2 - Como calcula a nota com a final ? é ponderada ? Ou é uma média aritmética normal ? 

Pergunte ao seu professor e peça mas esclarecimentos. 

 

Por último, a classe de teste, que como disse, é o programa principal. Vou dar uma dica para você. 
Todos os exercícios vão precisar de uma classe de teste que é o programa principal. (exceto num lance aí que explico depois). Então as classes de teste devem ser assim

 

/* este é um template de um programa Java*/
/* Este template serve para 99% dos casos dos exercícios de cursos de Java por aí*/
/* use-o como um modelo, por isso é chamado de template (template = modelo) */ 
/* primeiro coloque os imports */ 
import java.util.Scanner;  /* para fazer leitura de dados no teclado */ 
import java.util.Random; /* para gerar números aleatórios, por exemplo */ 

Class Exercício_xxxxx  {
  
  /* substitua xxxx pelo lista-número do exercicio. */
  /* Este será o nome do arquivo .java (fonte) e do .jar (programa pronto para rodar) */
  public static void main(String[] args) { 
    /* declare os objetos e instancie-os */ 
    /* no exemplo seria */ 
    Alunos nerd = new Aluno() ;
    Alunos malandroQueNaoEstuda = new Aluno();
    Alunos peixeDoProfessor = new Aluno();
    
    /* carregue as variáveis com dados iniciais. as vezes vai ler do teclado, as vezes você vai atribuir direto */ 
    
    
    /* lógica principal do programa */
    
  } /* fim do main, o programa principal */ 
 } /* fim da classe, o fonte do programa */ 

 

Como essa é a segunda resposta que dou para você tem algumas dicas que são específicas para esse exercício e tem algumas dicas que servem para qualquer exercício. 

Se precisar de mais esclarecimentos, não hesite em me contactar.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×