Orientaçao a objetos e arrays! [RESOLVIDO]

11 respostas
manolo

Boa noite pessoal, já digo de primeira que não tenho certeza se eu acertei o título do tópico :D.

O meu problema e o seguinte, tenho que construir uma classe que mostre um menu com 3 opções:

-a) Carregar 10 pessoas no array.
-b) Mostrar as pessoas que estão armazenadas no array, inclusive o valor do
IMC de cada uma (utilizar o método estático getImc()).
-c) Mostrar apenas as pessoas com obesidade.

A primeira opção eu consegui concretizar, mesmo tendo bastante dificuldade. Agora o problema e a logica da opção "b", que não vai nem a pau.

Montei 3 classes uma com os atributos, construtores e métodos, e outra com um método estático que e o calculo do imc!

Segue abaixo a classe executável!
import java.util.Scanner;
public class ArrayPessoa {

    public static void main(String args[]) {
    	
    	Scanner input = new Scanner (System.in);
    	Pessoa objeto1[] = new Pessoa[2];
    	
    	char escolha;
    	
    	do{
    		
        System.out.println(" Selecione um opçao: ");
    	System.out.println(" =================== ");
    	System.out.println(" a)- Carregar 10 pessoas no array ");
    	System.out.println(" b)- Mostrar as pessoas do array e seu respectivo IMC ");
    	System.out.println(" c)- Mostrar as pessoas com obesidade ");
    	System.out.println(" d)- SAIR ");
    	
    	escolha = input.nextLine().charAt(0);
    	
    	switch(escolha){
    	
    		
    		case 'a':
    			for(int i=0; i< objeto1.length; i++ ){
    				System.out.println(" Informe o nome da " +i+ " pessoa! ");
    				String x=input.nextLine();
    				System.out.println(" Informe o peso da " +i+ " pessoa! ");
    				double y=input.nextDouble();
    				System.out.println(" Informe a altura da " +i+ " pessoa! ");
    				double z=input.nextDouble();input.nextLine();
    				System.out.println(" Informe o sexo da " +i+ " pessoa! ");
    				char a=input.nextLine().charAt(0);
    				objeto1[i] = new Pessoa(x,y,z,a);
    				
    				}
    				
    		case 'b':
    			for(int i=0; i<objeto1.length; i++){
    				System.out.println(objeto1[i].getnome());
    				System.out.println(objeto1[i].getimc(objeto1[i]get.peso();objeto1[i].getaltura()));
    			}	
    		
    		}
    			
    	
    	}while(escolha != 'd');
    	
    	System.out.println(" *** Obrigado! *** ");
    }
    
    
}

Obrigado pela ajuda!

11 Respostas

L

Cara em primeiro lufgar seu codigo nao compila pois vc usa ; ponto e virgula para separar os argumento no print ,deveria ser virgula tente assim:

System.out.println(" "+ objeto1[i].getimc(objeto1[i]get.peso(),objeto1[i].getaltura())); // se o que este metodo retorna for uma String nao precisa do  " " + no comeco se nao precisa.
manolo

Então não rolo fazer desse jeito! Estou muito confuso nessa parte de orientação a objetos! Estou mandando outra classe com os atributos e construtores,pois nao tenho certeza se errei!

public class Pessoa {
	
	private String nome;
	private double peso;
	private double altura;
	private char sexo;

    public Pessoa(String n, double m, double o, char p ) {
    	nome=n;
    	peso=m;
    	altura=o;
    	sexo=p; 	
    }
    
    public void setnome(String n){
    	nome=n;	
    }
    public String getnome(){
    	return nome;
    }
    
    public void setpeso(double a){
    	peso=a;
    }
    public double getpeso(){
    	return peso;
    }
    
    public void setalptura(double b){
    	altura=b;
    }
    public double getaltura(){
    	return altura;
    }
    
    public void setsexo(char v){
    	sexo=v;
    }
    public char getsexo(){
    	return sexo;
    }
    
    
}

O erro que esta acontecendo e na classe executavel na linha 43!
Esses sao os seguintes erros que sao exibidos!

')' expected
';' expected

Estou curioso para aprender como eu faço, se alguem puder ajudar eu agradeço! :P

Obrigado...

lina

Oi,

Sua classe Pessoa não está errada.

Está acontecendo este erro, pois na linha 43 está realizando a chamada
do método getimc.

Não existe o método getimc() em nenhuma classe.

Primeiro crie o método, depois o utilize.

Tchauzin!

manolo

Bom dia Lina, desculpe a falta de atença esqueci de postar a classe Imc!
Segue ela abaixo!

public class Imc {

    public static double getimc(double peso, double altura) {
    	
    	return peso/(altura*altura);
    }
    
    
}

Crie ela por um método estático! O problema que não estou conseguido mostrar os resultados na opção "b" da classe ArrayPessoa, (que foi a primeira que eu postei).

Obrigado!

lina

Oi,

Você está fazendo confusão. o método getimc não está dentro da classe Pessoa e sim da Classe Imc.

Ou melhor, você está tendando chamar o método getImc utilizando a classe Pessoa.

Pessoa objeto1[] = new Pessoa[2];
objeto1[i].getimc();

// Ou seja, objeto1 é da classe pessoa e o método getimc é da classe Imc. Não  pra fazer assim! error!!!

Bom, poderá ser feito.:

1- Estender a classe Pessoa para Imc (public class Pessoa extends Imc).
2- Alterar a linha 43, para: System.out.println(objeto1[i].getimc(objeto1[i].getpeso(),objeto1[i].getaltura()));
3- Compilar seu programa.

Tchauzin!

manolo

[b]Lina desculpa a demora da resposta, mas não entendi como devo proceder! eu criei um método na classe imc!

Nossa pessoal desculpa a ingnorancia, mais a faculdade esta tao apertada que minha cabeça anda a mil :x

Sera que alguém podia me ajudar a compreender essa zica?

Obrigado :D[/b]

nel

Boa noite.

Seguiu as dicas do pessoal, ou seja, leu com atenção tudo o que foi dito acima? Se sim mas não resolveu o seu problema, poste TODO o seu código, TODAS as classes e diga-nos sua dúvida ou erro que ocorre em seu programa. Caso seja uma exception ou simplesmente uma saída indesejavél (o método deveria retornar 8 mas retorna 5 por exemplo) poste a saída também.

Caso contrário, fica dificíl entender o seu problema ok?
Abraços.

manolo

Nel, como postado acima segue as 3 classes abaixo!

A classe executável.

import java.util.Scanner;
public class ArrayPessoa {

    public static void main(String args[]) {
    	
    	Scanner input = new Scanner (System.in);
    	Pessoa objeto1[] = new Pessoa[2];
    	
    	char escolha;
    	
    	do{
    		
        System.out.println(" Selecione um opçao: ");
    	System.out.println(" =================== ");
    	System.out.println(" a)- Carregar 10 pessoas no array ");
    	System.out.println(" b)- Mostrar as pessoas do array e seu respectivo IMC ");
    	System.out.println(" c)- Mostrar as pessoas com obesidade ");
    	System.out.println(" d)- SAIR ");
    	
    	escolha = input.nextLine().charAt(0);
    	
    	switch(escolha){
    	
    		
    		case 'a':
    			for(int i=0; i< objeto1.length; i++ ){
    				System.out.println(" Informe o nome da " +i+ " pessoa! ");
    				String x=input.nextLine();
    				System.out.println(" Informe o peso da " +i+ " pessoa! ");
    				double y=input.nextDouble();
    				System.out.println(" Informe a altura da " +i+ " pessoa! ");
    				double z=input.nextDouble();input.nextLine();
    				System.out.println(" Informe o sexo da " +i+ " pessoa! ");
    				char a=input.nextLine().charAt(0);
    				objeto1[i] = new Pessoa(x,y,z,a);
    				
    				}
    				
    		case 'b':
    			for(int i=0; i<objeto1.length; i++){
    				System.out.println(objeto1[i].getnome());
    				System.out.println(Imc.getimc(objeto1[i]get.peso(),objeto1[i].getaltura()));
    			}	
    		
    		}
    			
    	
    	}while(escolha != 'd');
    	
    	System.out.println(" *** Obrigado! *** ");
    }
    
    
}

Em seguida segue a classe com os atributos, construtores e métodos.

public class Pessoa {
	
	private String nome;
	private double peso;
	private double altura;
	private char sexo;

    public Pessoa(String n, double m, double o, char p ) {
    	nome=n;
    	peso=m;
    	altura=o;
    	sexo=p; 	
    }
    
    public void setnome(String n){
    	nome=n;	
    }
    public String getnome(){
    	return nome;
    }
    
    public void setpeso(double a){
    	peso=a;
    }
    public double getpeso(){
    	return peso;
    }
    
    public void setalptura(double b){
    	altura=b;
    }
    public double getaltura(){
    	return altura;
    }
    
    public void setsexo(char v){
    	sexo=v;
    }
    public char getsexo(){
    	return sexo;
    }
    
    
}

Agora segue a classe imc que contem um metodo estatico.

public class Imc {

    public static double getimc(double peso, double altura) {
    	
    	return peso/(altura*altura);
    }
    
    
}

O meu problema e o seguinte, tenho que construir uma classe que mostre um menu com 3 opções:

-a) Carregar 10 pessoas no array.
-b) Mostrar as pessoas que estão armazenadas no array, inclusive o valor do
IMC de cada uma (utilizar o método estático getImc()).
-c) Mostrar apenas as pessoas com obesidade.

A primeira opção eu consegui concretizar, mesmo tendo bastante dificuldade. Agora o problema e a logica da opção "b", que não vai nem a pau.
Tentei seguir as dicas da Lina, mais realmente não entendi o que devo fazer e onde estou pecando, desculpe se não estou sendo claro, pois estou bem confuso!
Espero ter sido mais claro, caso nao e so falar que explico mais detalhadamente :D

Obrigado

OBS: Na saida aparece os seguinte problema:

- ')' expected
- ';' expected

nel

Isso é uma expection (erro) ou a saída? Se for uma expection poste ela completo.

Esta linha você está errando:

System.out.println(Imc.getimc(objeto1[i]get.peso(),objeto1[i].getaltura()));

Altere para:

System.out.println(Imc.getimc(objeto1[i].getpeso(),objeto1[i].getaltura()));

Mas acho melhor fazer o que a lina disse:

public class Pessoa extends Imc{ //seu código }

E alterar esta linha cima do System.out para: (como citado por ela também)

System.out.println(objeto1[i].getimc(objeto1[i].getpeso(),objeto1[i].getaltura()));

Esta é a melhor solução na minha opinião. O extends refere-se a herança, se você está dizendo que sua classe Pessoa extende de Imc por herança você pode utilizar todos os métodos de Img quando instanciar sua classe pessoa, ou seja:

Pesssoa pessoa = new Pessoa(); //a referência pessoa tem acesso ao método getimc() por herança, sendo assim: pessoa.getimc(peso, altura);

Ok?
Abraços.

manolo

[b]Legal Nel, foi uma falta de atençao minha! :oops:

Muito obrigado pela a sua ajuda e por me esclarecer o significado de “extends”.

Vlwwww Pessoal!

Abraçoss.
[/b]

nel

Que isso cara, sem problemas. O pessoal aqui do GUJ como tu percebeu é bem atencioso. Caso lhe interesse, pesquisa sobre herança e polimorfismo em Java, é bem interessante.

Abraços!

Criado 17 de novembro de 2009
Ultima resposta 19 de nov. de 2009
Respostas 11
Participantes 4