Problema com método

17 respostas
R
olá estou fazendo um aplicativo na facul para calcular IMC, mas tenho q chamar metodos dentro de outros metodos, e o metodo showMenu() está dando erro na linda q lê a opção e quando eu chamo ele no main(); alguem poderia me ajudar... obrigado a todos...
package POOexer02;

import java.util.Scanner;
import POOexer02.Pessoa;
import POOexer02.IMC;


public class Ativ02 {

	private static Scanner novo;
	
    private Pessoa lerDadosPessoa(){
		
		 Pessoa pessoa = new Pessoa();
		 
		 String nome = null;
		 int idade;
		 double peso;
		 double altura;
		  
		 System.out.println("\nNome");
		 nome=novo.nextLine();
		 System.out.println("Idade");
		 idade = Integer.parseInt(novo.nextLine());				  
		 System.out.println("Peso");
		 peso=novo.nextDouble();
		 System.out.println("Altura");
		 altura=novo.nextDouble();
		  
		 pessoa.setNome(nome);
		 pessoa.setIdade(idade);
		 pessoa.setPeso(peso);
		 pessoa.setAltura(altura);	  
		 return pessoa;
	}
	
	public void determinarClassificacaoIMC(IMC i){
		double imc = 0;
		i.getClassificacaoIMC(imc);
		
	}
	
	public static void showMenu(){
		
		IMC i = new IMC();
		Ativ02 atv = new Ativ02();
		
		novo = new Scanner (System.in);
		
		Integer escolha;
		
		do{
	  		  
			  System.out.println("\n 1-Calcular IMC");
			  System.out.println(" 2-Sair");
			  escolha= Integer.parseInt(novo.nextLine());
			  
			  switch(escolha){
			  
			  case 1:{
				  
				  atv.lerDadosPessoa();
				  double altura = 0, peso = 0;
				  i.calIMC(altura, peso);
				  atv.determinarClassificacaoIMC(i);
					  
				  break;
			  }
			  case 2:{
				  System.out.println("Saindo...");
				  break;
			  }	
		 }
			  
		}while(escolha!=2);
		

    }

	public static void main(String[] args){
		showMenu();
		
	}
}

tenho mais duas classes, se precisar eu mando.... :)

17 Respostas

E

“Está dando erro” não é resposta. Que erro está ocorrendo?

R

eu consigo ler a opção, mas dai aparece…

Exception in thread main java.lang.NumberFormatException: For input string: “”

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at POOexer02.Ativ02.showMenu(Ativ02.java:56)

at POOexer02.Ativ02.main(Ativ02.java:81)
asousaj
Rafa2012:
... metodo showMenu() está dando erro na linda q lê a opção e quando eu chamo ele no main()...
Coloca ai o erro, senão da até desânimo analisar. [color=red]EDIT demorei editando a msg e vc colocou o erro [/color] Tá funfando aqui.
import java.util.Scanner;

public class Teste {
	public static Scanner novo;

	public static void showMenu() {
		novo = new Scanner(System.in);
		Integer escolha;
		do {
			System.out.println("\n 1-Calcular IMC");
			System.out.println(" 2-Sair");
			escolha = Integer.parseInt(novo.nextLine());

			switch (escolha) {
			case 1:
				System.out.println("Opção 1");
				break;
			case 2:
				System.out.println("Opção 2.  Saindo...");
				break;
			}
		} while (escolha != 2);
	}

	public static void main(String[] args) {
		showMenu();
	}
}

Melhora o nome das variaveis, colocar "novo" para o Scanner não achei legal ... :S hehehehe

asousaj

Rafa2012:
eu consigo ler a opção, mas dai aparece…

Exception in thread main java.lang.NumberFormatException: For input string: “”

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at POOexer02.Ativ02.showMenu(Ativ02.java:56)

at POOexer02.Ativ02.main(Ativ02.java:81)</blockquote>

For input string: “” … você não está digitando o valor 1 ou 2??? Tá parecendo isso pois a entrada está “” por isso o NumberFormatException.

R

hehe… vou mudar, mas o problema é o seguinte, quando eu clicar a opção 1, tenho q adicionar a pessoa, calcular o imc, e mostrar a classificação, que estão em outras classes…
eu posso fazer isso dentro do showMenu()?

R

estou digitando 1 ou 2, pq da esse erro?

asousaj

Rafa2012:
hehe… vou mudar, mas o problema é o seguinte, quando eu clicar a opção 1, tenho q adicionar a pessoa, calcular o imc, e mostrar a classificação, que estão em outras classes…
eu posso fazer isso dentro do showMenu()?

Sim pode.

asousaj

Roda o código que postei(Baseado no seu) e vê se acontece e mesmo erro.
Como você está executando? É via IDE ou direto no prompt?

R

como faço pra resolver esse erro amigo?

R

via IDE, vou tentar aki…

R

assim dá certo, o meu tb deu, mas quando instanciei o objeto e chamei os metodos dentro do case 1: apareceu o erro…

R

deu o mesmo erro amigo, eu criei um objeto atv do tipo Ativ02, e chamei o metodo atv.lerDadosPessoa(); ae aparece o mesmo erro…

asousaj

Tá facil Rafa, vamos por partes:
1º - No seu case 1 tem "atv.lerDadosPessoa(); " esse metodo tem return tipo “Pessoa”, onde vc esta armazenando o resultado?
Posta ai as outras 2 classes.

R
package POOexer02;

public class Pessoa {
	
	private String nome;
	private int idade;
	private double peso;
	private double altura;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getIdade() {
		return idade;
	}
	public void setIdade(int idade) {
		this.idade = idade;
	}
	public double getPeso() {
		return peso;
	}
	public void setPeso(double peso) {
		this.peso = peso;
	}
	public double getAltura() {
		return altura;
	}
	public void setAltura(double altura) {
		this.altura = altura;
	}
	
	protected void finalize(){
		System.out.println (" Objeto destruído pelo garbagecollection");
		}
}
R
package POOexer02;

public class IMC {
	
	private static IMC instancia;
	
	public IMC(){
		
	}
	
	public static IMC newInstance(){
		
		if(instancia == null)
			instancia = new IMC();
		
			return instancia;
	}
	
	public double calIMC(double altura, double peso){
		
        double imc;
	    imc = peso / ((altura)* (altura));
	    System.out.printf ("\n\n O Seu IMC é : %3.1f!!!", imc);
	    return imc;
		
	}
	
	public String getClassificacaoIMC(double imc){
		
		if (imc < 17){			
		 return ("\n Muito Abaixo do Peso!!!");
		}
		
		else if ( imc < 18.50){			
			return ("\n Abaixo do Peso!!!");
		}
		
        else if ( imc < 25.0){			
			return ("\n Peso Normal!!!");
		}
		
        else if ( imc < 30.0){			
			return ("\n Acima do Peso!!!");
		}
		
        else if ( imc < 35.0){			
			return ("\n Obesidade I!!!");
		}
		
        else if (imc < 40.0){			
			return ("\n Obesidade II (Severa)!!!!!!");
		}
		
        else 
		return ("\n Obesidade III (Mórbida)!!!!!!");		
	}
}

tah ae amigo…

asousaj

Da uma olhadinha ai, tentei alterar o minimo possivel seu código. Senão ia dar mais trabalho pra vc entender.
Use membros estáticos quando realmente necessários, removi um metodo.

import java.util.Scanner;

public class Ativ02 {
	private static Scanner novo;

	public Pessoa lerDadosPessoa() {

		Pessoa pessoa = new Pessoa();

		String nome = null;
		int idade;
		double peso;
		double altura;

		System.out.println("\nNome");
		nome = novo.next();
		System.out.println("Idade");
		idade = Integer.parseInt(novo.next());
		System.out.println("Peso");
		peso = novo.nextDouble();
		System.out.println("Altura");
		altura = novo.nextDouble();

		pessoa.setNome(nome);
		pessoa.setIdade(idade);
		pessoa.setPeso(peso);
		pessoa.setAltura(altura);
		return pessoa;
	}

	public void showMenu() {

		IMC i = new IMC();
		Ativ02 atv = new Ativ02();
		Pessoa pessoa; // aqui

		novo = new Scanner(System.in);

		Integer escolha;

		do {

			System.out.println("\n 1-Calcular IMC");
			System.out.println(" 2-Sair");
			escolha = Integer.parseInt(novo.next());

			switch (escolha) {

			case 1: {
				pessoa = atv.lerDadosPessoa();// aqui
				double imc = i.calIMC(pessoa.getAltura(), pessoa.getPeso());//aqui
				System.out.println(i.getClassificacaoIMC(imc));//aqui
				break;
			}
			case 2: {
				System.out.println("Saindo...");
				break;
			}
			}

		} while (escolha != 2);

	}

	public static void main(String[] args) {
		Ativ02 ativ02 = new Ativ02();//aqui
		ativ02.showMenu();//aqui

	}
}

Procura as apostilas da caelum , vão lhe ajudar bastante.

R

valeu amigão, entendí agora… brigadão msm…

Criado 19 de março de 2013
Ultima resposta 19 de mar. de 2013
Respostas 17
Participantes 3