Ir ao conteúdo

Posts recomendados

Postado

Boa noite! estou iniciando na programação java poderia me ajudar com esse programa ele não está parando quando digito a letra "n" e no final da um erro.Obrigado!!!

 

public class ImcExercicio {

    public static void main(String[] args) {
        float peso[] = new float[3];
        float altura[] = new float[3];
        double imc[] = new double[3];
        String continuaOuNao;
        boolean continua = true;
        Scanner leitor = new Scanner(System.in);
        Scanner leitor2 = new Scanner(System.in);
        while(continua){        
            for(int i = 0; i <= 2; i++ ){
                System.out.print("Digite o seu peso: ");
                peso = leitor.nextFloat();
                System.out.print("Digite a sua altura: ");
                altura = leitor.nextFloat();
                imc = peso / (Math.pow(altura, 2));
                System.out.printf("Continuar, im ou [n]ão?");
                continuaOuNao = leitor2.nextLine();
                if(continuaOuNao.equals("n")){
                    continua = false;
                }
            }
        
        }
        for(int i = 0; i <= 2;i++ ){
            System.out.printf("O seu imc é: %f", imc);
        }
    }

}

Postado

Tem vários erros no seu código .... vamos por partes:

 

1- você está usando Vetor ... com vetores, a forma certa de se atribuir um valor é indicando qual o índice desse falor ... assim:

peso[i] = leitor.nextFloat();

2- Não é necessário criar dois objetos da classe Scanner ... a mesma instância pode ler os dados numéricos e as Strings normalmente ... só chamar o método correto em cada situação (exatamente como você fez, porém na mesma classe

 

3- Você utiliza a Biblioteca Math para calcular o quadrado do valor passado ... porém, o valor que você passa é um float e um inteiro ... a biblioteca pede que seja passado dois doubles (um inteiro pode ser entendido como double pelo java) ... uma forma de fazer o quadrado e manter o valor como float, é fazendo a multiplicação do valor por ele mesmo ...

 

4- Veja essa parte do algoritmo:

boolean continua = true;
...
while(continua){
  for(int i = 0; i <= 2; i++ ){
    ...
    System.out.printf("Continuar, im ou [n]ão?");
    continuaOuNao = leitor2.nextLine();
    if(continuaOuNao.equals("n")){
      continua = false;
    }
  }
}

você inicialmente fez um laço de repetição verificando o valor de continua, mas dentro você coloca um for ... nesse tipo de laço, você obrigatóriamente vai passar o total de vezes até que a condição não seja satisfatória (ou seja, i não ser menor nem igual a 2) ... assim, aquele if dentro do for não tem valor nenhum para parar a execução, ele sempre vai executar 3 vezes (valores de i sendo 0,1 e 2) e só depois vai checar o while ...

Uma dica importante .. procure pela internet, ou com pessoas mais próximas como fazer o Teste de Mesa ... é um método simples para testar sua lógica para ver se está tudo ok ... pela internet em fóruns é um pouco complicado explicar, mas  vale muito a pena no começo quando estamos apenas aprendendo a programar ;) ...

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!