Isso em java fica como?

• Para Homens: (72.7 *h) – 58;
• Para Mulheres: (62.1 * h) – 44.7

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
float altura, pesomasc, pesofem;
char sexo[10];

scanf("%f",&altura);
scanf("%s",sexo);

if (strcmp(sexo,"MASCULINO") == 0){
pesomasc = (72.7 * altura) - 58;
printf("PESO = %.2f\n",pesomasc);
}

else if (strcmp(sexo,"FEMININO") == 0) {
pesofem = (62.1 * altura) - 44.7;
printf("PESO = %.2f\n",pesofem);
}

return 0;

}

Boa noite, :coffee:
Fica desse jeito aqui:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws Exception {
		/*Captura string que for digitado pelo usuário*/
		BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));

		String altura;
		double pesoMasc;
		double pesoFem;
		String sexo;

		System.out.print("Digite a altura: ");
		altura = scan.readLine();
		System.out.print("Digite o sexo: ");
		sexo = scan.readLine();
		
		/*Converte para maiúsculo*/
		sexo = sexo.toUpperCase();
		
		/*Na condição if comparei a String, se não encontrar,
		 irá comparar a primeira letra digita, se for M = masculino*/
		if(sexo.equals("MASCULINO") || sexo.charAt(0) == 'M') {
			pesoMasc = (72.7 * Double.parseDouble(altura)) - 58;
			System.out.printf("O seu peso ideal é: %.2f", pesoMasc);
		} else if(sexo.equals("FEMININO") || sexo.charAt(0) == 'F') {
			pesoFem = (62.1 * Double.parseDouble(altura)) - 44.7;
			System.out.printf("O seu peso ideal é: %.2f", pesoFem);
		} else {
			System.out.println("Sexo não encontrado! Favor verificar!");
		}
	}
}

Por que vc usou:

BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));

Ao invés do Scanner? É alguma boa prática?

Scanner:
Mais simples de usar
Permite vários tipos de sepadores (além da quebra de linha)

BufferedReader:
Mais rápida
Pode ser associada a vários tipos de readers

Eu também sou novato em Java quando utilizei o scanner.NextDouble() deu uma exception, por isso tive que usar o BufferedReader

1 curtida

O único método do Scanner que consome a quebra de linha é o nextLine(), por isso, ao ler entrada do teclado ele não traz praticamente ganho nenhum pois os métodos nextInt(), nextDouble() ou nextQualquerCoisa() não vão consumir a quebra de linha que fica no stream ao pressionar ENTER.

2 curtidas

Obrigado @staroski,
Tirou até uma dúvida minha também!