Erro de retorno

7 respostas
BinhoAraujo

Pq esta me retornanto esse erro??

Informe o seu Peso:
80
Informe a sua Altura:
1.76
[color=red]Exception in thread "main"[/color] [color=blue]java.util.InputMismatchException[/color]
[color=red]at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at Execucao.main[/color][color=blue](Execucao.java:19) [/color]

public class Imc {

	double massa;
	double altura;
	
	public Imc(){
		
	}
	
	public Imc(double pMassa, double pAltura){
		setMassa(pMassa);
		setAltura(pAltura);
	}
	
	public void setMassa(double massa){
		this.massa = massa;
	}
	
	public void setAltura(double altura){
		this.altura = altura;
	}
	
	public double getMassa(){
		return massa;
	}
	
	public double getAltura(){
		return altura;
	}
	
	public double getIMC(){
				
		return  (massa/(altura*altura));
	
	}
	
}
import java.util.Scanner;
public class Execucao {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc = new Scanner(System.in);
		
		Imc objImc = new Imc();
		
		System.out.println("Informe o seu Peso: ");
		objImc.setMassa(sc.nextDouble());
		
		System.out.println("Informe a sua Altura: ");
		objImc.setAltura(sc.nextDouble());
		
		System.out.println("Seu IMC é: "+ objImc.getIMC());
		
	}

}

7 Respostas

evertonsilvagomesjav
BinhoAraujo:
Pq esta me retornanto esse erro??

Informe o seu Peso:
80
Informe a sua Altura:
1.76
[color=red]Exception in thread "main"[/color] [color=blue]java.util.InputMismatchException[/color]
[color=red]at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at Execucao.main[/color][color=blue](Execucao.java:19) [/color]

public class Imc {

	double massa;
	double altura;
	
	public Imc(){
		
	}
	
	public Imc(double pMassa, double pAltura){
		setMassa(pMassa);
		setAltura(pAltura);
	}
	
	public void setMassa(double massa){
		this.massa = massa;
	}
	
	public void setAltura(double altura){
		this.altura = altura;
	}
	
	public double getMassa(){
		return massa;
	}
	
	public double getAltura(){
		return altura;
	}
	
	public double getIMC(){
				
		return  (massa/(altura*altura));
	
	}
	
}
import java.util.Scanner;
public class Execucao {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc = new Scanner(System.in);
		
		Imc objImc = new Imc();
		
		System.out.println("Informe o seu Peso: ");
		objImc.setMassa(sc.nextDouble());
		
		System.out.println("Informe a sua Altura: ");
		objImc.setAltura(sc.nextDouble());
		
		System.out.println("Seu IMC é: "+ objImc.getIMC());
		
	}

}

Por que com certeza na hora de informar o peso e á altura vc esta utilizando ("." ponto), ao invés de ("," virgula).

altura = 1,75
peso = 74,6

Não utilize ponto.

evertonsilvagomesjav

rs agora q eu vi que vc postou la em cima o peso e a altura, no peso vc colocou ponto mesmo, coloque virgula.

BinhoAraujo

era isso msm =)

so mais uma coisinha, como posso reduzir o resultado?
no caso de 25.826446280991735 para 25.82?

Muito Obrigado!

evertonsilvagomesjav
BinhoAraujo:
era isso msm =)

so mais uma coisinha, como posso reduzir o resultado?
no caso de 25.826446280991735 para 25.82?

Muito Obrigado!

ai vc pode usar um objeto DecimalFormat, por exemplo:

DecimalFormat formatador = new DecimalFormat("#.##"); // aqui vc especifica que vao haver duas casas decimais.

double resultado = objImc.getIMC();        
String resultadoFormatado = formatador.format(resultado); // o método format retorna uma String e o parametro do método recebe um double.

System.out.println(resultadoFormatado); // imprime o resultado com duas casas depois da virgula.
BinhoAraujo

Nao entendi direito nao!

evertonsilvagomesjav
BinhoAraujo:
Nao entendi direito nao!

Seu codigo vai ficar assim:

public static void main(String[] args) {   
        // TODO Auto-generated method stub   
  
		
        DecimalFormat f = new DecimalFormat("#.##"); // duas cadas depois da virgula.
		
        Scanner sc = new Scanner(System.in);   
           
        Imc objImc = new Imc();   
           
        System.out.println("Informe o seu Peso: ");   
        objImc.setMassa(sc.nextDouble());   
           
        System.out.println("Informe a sua Altura: ");   
        objImc.setAltura(sc.nextDouble());   
           
        double resultado = objImc.getIMC(); // resultado recebe o valor
        
        String resultadoFormatado = f.format(resultado); // formata resultado onde ira ficar no formatado (25.00 ou 2.72) duas casas depois da virgula e retorna uma string 
        System.out.println(resultadoFormatado); // aqui exibi seu resultado formatado com duas casas depois da virgula.
    }
BinhoAraujo

Ah sim, agora entendi… desculpa…
e muito obrigado :wink:

Criado 16 de abril de 2010
Ultima resposta 17 de abr. de 2010
Respostas 7
Participantes 2