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…
[code]
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();
}
}[/code]
tenho mais duas classes, se precisar eu mando… 
“Está dando erro” não é resposta. Que erro está ocorrendo?
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)
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.
[code]
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();
}
}[/code]
Melhora o nome das variaveis, colocar “novo” para o Scanner não achei legal … :S hehehehe
[quote=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)[/quote]
For input string: “” … você não está digitando o valor 1 ou 2??? Tá parecendo isso pois a entrada está “” por isso o NumberFormatException.
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()?
estou digitando 1 ou 2, pq da esse erro?
[quote=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()? [/quote]
Sim pode.
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?
como faço pra resolver esse erro amigo?
assim dá certo, o meu tb deu, mas quando instanciei o objeto e chamei os metodos dentro do case 1: apareceu o erro…
deu o mesmo erro amigo, eu criei um objeto atv do tipo Ativ02, e chamei o metodo atv.lerDadosPessoa(); ae aparece o mesmo erro…
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.
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");
}
}
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…
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.
valeu amigão, entendí agora… brigadão msm…