Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Desafio do Tópico: Entrada e Saída de Dados no Terminal do Dart

Prezados, boa tarde!

Não estou conseguindo de forma alguma realizar o desafio, o meu código pula dois inputs, recebe apenas um e calcula o IMC de uma forma muito estranha: Imagem com um terminal onde o usuário inseriu os dados conforme mencionado mas  aoós idade o terminal pula dois dados recebe um e calcula o imc

Segue meu código:

import 'dart:io';

void main() {
  List <dynamic> dados = [];
  print("Informe seu nome:");
  String? nome = stdin.readLineSync();
  if(nome==null){
    print("Por gentileza insira um nome válido:\n");
    String? nome = stdin.readLineSync();
    while(nome==null){
      print("Por gentileza insira um nome válido:\n");
      String? nome = stdin.readLineSync();
    }
  }
  print("Informe sua idade:");
  int idade = stdin.readByteSync();

  print("Insira sua altura:\n");
  String? altura = stdin.readLineSync();
  double alturan = double.parse(altura!);

  print("Insira seu peso:\n");
  String? peso = stdin.readLineSync();
  double peson = double.parse(peso!);

  double imc = peson / (alturan * alturan);

    if (imc < 17) {
      print(
          "Olá $nome\n seu IMC é $imc\n portanto você está muito abaixo do peso.\n");
    }
    if (imc >= 17 && imc < 18.50) {
      print(
          "Olá $nome\n seu IMC é $imc\n portanto você está abaixo do peso.\n");
    }
    if (imc >= 18.50 && imc < 25) {
      print(
          "Olá $nome\n seu IMC é $imc\n portanto você está com peso normal.\n");
    }
    if (imc >= 25 && imc < 30) {
      print("Olá $nome\n seu IMC é $imc\n portanto você está acima do peso.\n");
    }
    if (imc >= 30 && imc < 35) {
      print("Olá $nome\n seu IMC é $imc\n portanto você com obesidade I.\n");
    }
    if (imc >= 35 && imc < 40) {
      print(
          "Olá $nome\n seu IMC é $imc\n portanto você com obesidade II (severa).\n");
    }
    if (imc > 40) {
      print(
          "Olá $nome\n seu IMC é $imc\n portanto você com obesidade III (móbida).\n");
    }

}
3 respostas
solução!

Consegui encontrar o erro, o problema ocorria após o int idade = stdin.readByteSync, ainda sigo com a dúvida de porquê isso ocorreu, mas se solucionou após trocar o int por um String? e o readByteSync por um readLineSync.

Segue meu código:

import 'dart:io';

void main() {
  List <dynamic> dados = [];
  print("Informe seu nome:");
  String? nome = stdin.readLineSync();
  if (nome != null) {
    print("Informe sua idade:");
    String? idade = stdin.readLineSync();
    if (idade != null) {
      print("Insira sua altura:");
      String? altura = stdin.readLineSync();
      if (altura != null) {
        double alturan = double.parse(altura);
        print("Insira seu peso:");
        String? peso = stdin.readLineSync();
        if (peso != null) {
          double peson = double.parse(peso);
          double imc = peson / (alturan * alturan);
          if (imc < 17) {
            print(
                "Olá $nome\n seu IMC é $imc\n portanto você está muito abaixo do peso.\n");
          }
          if (imc >= 17 && imc < 18.50) {
            print(
                "Olá $nome\n seu IMC é $imc\n portanto você está abaixo do peso.\n");
          }
          if (imc >= 18.50 && imc < 25) {
            print(
                "Olá $nome\n seu IMC é $imc\n portanto você está com peso normal.\n");
          }
          if (imc >= 25 && imc < 30) {
            print(
                "Olá $nome\n seu IMC é $imc\n portanto você está acima do peso.\n");
          }
          if (imc >= 30 && imc < 35) {
            print(
                "Olá $nome\n seu IMC é $imc\n portanto você com obesidade I.\n");
          }
          if (imc >= 35 && imc < 40) {
            print(
                "Olá $nome\n seu IMC é $imc\n portanto você com obesidade II (severa).\n");
          }
          if (imc > 40) {
            print(
                "Olá $nome\n seu IMC é $imc\n portanto você com obesidade III (móbida).\n");
          }
        }
      }
    }
  }
}

Boa noite Kauã, mesmo que sua variável receba o nome Idade, o que lembra um inteiro, o retorno do terminal e uma string. Acho que você pode ler mais aqui: https://www.alura.com.br/artigos/entrada-saida-dados-terminal-dart

Bom dia!

Muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software