Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Import 'dart:io' - Exercício IMC

Olá,

Gostaria de entender um pouco melhor sobre o por que não reconhece as variáveis Peso e Altura. Poderiam me ajudar, por favor? Obrigado.

import 'dart:io';

void main() {

  print('Qual é o seu nome?');
  String? nome = stdin.readLineSync();
  if (nome != null) {
    print('Qual é a sua idade?');
  }
  String? idade = stdin.readLineSync();
  if (idade != null) {
    print('Qual é a sua altura?');
  }
  String? inputAltura = stdin.readLineSync();
  if (inputAltura != null) {
    double altura = double.parse(inputAltura);
  }
  print('Qual e seu peso?');
  String? inputPeso = stdin.readLineSync();
  if (inputPeso != null) {
    double peso = double.parse(inputPeso);
  }
  double imc = peso / (altura * altura);
  print(
      'Olá meu nome é $nome, tenho $idade anos, a minha altura é $altura e meu peso é $peso. \n'
          'Considerando a minha altura e meu peso atual o meu IMC é de $imc.');
}
1 resposta
solução!

Olá Thiago,

O problema é que as variáveis peso e altura estão sendo declaradas dentro dos blocos de condição if, o que faz com que elas não sejam reconhecidas fora desses blocos. Para corrigir isso, basta declará-las antes dos blocos if, atribuindo o valor null a elas inicialmente, como no exemplo abaixo:

import 'dart:io';

void main() {
  print('Qual é o seu nome?');
  String? nome = stdin.readLineSync();

  print('Qual é a sua idade?');
  String? idade = stdin.readLineSync();

  print('Qual é a sua altura?');
  String? inputAltura = stdin.readLineSync();
  double? altura = null;
  if (inputAltura != null) {
    altura = double.parse(inputAltura);
  }

  print('Qual é o seu peso?');
  String? inputPeso = stdin.readLineSync();
  double? peso = null;
  if (inputPeso != null) {
    peso = double.parse(inputPeso);
  }

  if (nome != null && idade != null && altura != null && peso != null) {
    double imc = peso / (altura * altura);
    print(
        'Olá meu nome é $nome, tenho $idade anos, a minha altura é $altura e meu peso é $peso. \n'
            'Considerando a minha altura e meu peso atual o meu IMC é de $imc.');
  } else {
    print('Alguma informação não foi preenchida corretamente.');
  }
}

Dessa forma, as variáveis peso e altura estarão disponíveis para uso fora dos blocos if e o cálculo do IMC poderá ser realizado corretamente.

Espero ter ajudado e bons estudos!