Error: Try correcting the name to one that is defined, or Defining the name

Asked

Viewed 131 times

-1

I am doing a small project using Dart, only that there is an error in my file ImprimirResultado.dart.

  • Error

Undefined name 'Imcformated'. Try correcting the name to one that is defined, or Defining the name.


  • Main file.Dart
import 'package:dart1/CalculoIMC.dart';

main() {
  CalculoIMC();
}

  • File Calculoimc.Dart
import 'dart:io';
import 'package:dart1/ImprimirResultado.dart';

CalculoIMC() {
  stdout.write("Digite a sua massa: ");
  var massa = double.parse(stdin.readLineSync());
  stdout.write("Digite a sua altura: ");
  var altura = double.parse(stdin.readLineSync());
  var IMC = massa / (altura * 2);

  var IMCFormated = IMC.toStringAsFixed(2);

  ImprimirResultado(IMC);
}
  • Printed File.Dart
import 'package:dart1/CalculoIMC.dart';

ImprimirResultado(IMC) {
  if (IMC < 16) {
    print("Você está com $IMCFormated\Kg, MUITO ABAIXO DO PESO");
  } else if (IMC > 16 && IMC < 17) {
    print("Você está com $IMCFormated\Kg, MAGREZA MODERADA");
  } else if (IMC > 17 && IMC < 18.5) {
    print("Você está com $IMCFormated\Kg, MAGREZA LEVE");
  } else if (IMC > 18.5 && IMC < 25) {
    print("Você está com $IMCFormated\Kg, SAUDÁVEL");
  } else if (IMC > 25 && IMC < 30) {
    print("Você está com $IMCFormated\Kg, SOBREPESO");
  } else if (IMC > 30 && IMC < 35) {
    print("Você está com $IMCFormated\Kg, OBESIDADE GRAU I");
  } else if (IMC > 35 && IMC < 40) {
    print("Você está com $IMCFormated\Kg, OBESIDADE GRAU II");
  } else if (IMC >= 40) {
    print("Você está com $IMC\Kg, OBESIDADE GRAU III");
  }
}
  • filing cabinet CalculoIMC.dart and archive ImprimirResultado.dart are inside the lib folder.

1 answer

1


You just passed IMC, has to go through IMCFormated also, so that the two variables exist in the local function and can be used. Therefore the function has to receive two parameters. Something like this:

ImprimirResultado(IMC, IMCFormated)

And the exact same call.

I would put guys to make code more robust.

On the other hand you could leave the formatting to perform within the function and there would not worry about it. I can’t say because I don’t know the exact problem, but it seems to make more sense since only the function that makes the impression should take care of formatting.

I also didn’t see why so many files.

The code has some problems, even if it doesn’t always generate errors. Don’t treat it as if it were completely correct. I would do something like this:

import 'dart:io';

main() {
  CalculoIMC();
}

CalculoIMC() {
    stdout.write("Digite a sua massa: ");
    var massa = double.tryParse(stdin.readLineSync());
    if (massa == null) return;
    stdout.write("Digite a sua altura: ");
    var altura = double.tryParse(stdin.readLineSync());
    if (altura == null) return;
    ImprimirResultado(massa / (altura * 2));
}

ImprimirResultado(double IMC) {
    var IMCFormated = IMC.toStringAsFixed(2);
    if (IMC < 16) print("Você está com $IMCFormated\Kg, MUITO ABAIXO DO PESO");
    else if (IMC > 16 && IMC < 17) print("Você está com $IMCFormated\Kg, MAGREZA MODERADA");
    else if (IMC > 17 && IMC < 18.5) print("Você está com $IMCFormated\Kg, MAGREZA LEVE");
    else if (IMC > 18.5 && IMC < 25) print("Você está com $IMCFormated\Kg, SAUDÁVEL");
    else if (IMC > 25 && IMC < 30) print("Você está com $IMCFormated\Kg, SOBREPESO");
    else if (IMC > 30 && IMC < 35) print("Você está com $IMCFormated\Kg, OBESIDADE GRAU I");
    else if (IMC > 35 && IMC < 40) print("Você está com $IMCFormated\Kg, OBESIDADE GRAU II");
    else if (IMC >= 40) print("Você está com $IMC\Kg, OBESIDADE GRAU III");
}

Behold working in the ideone. And in the repl it.. Also put on the Github for future reference.

To better understand what you are doing read:

Programming is understanding the concepts, reading the documentation, and looking for the right way to do things, don’t kick, don’t just make it work.

  • The problem was that of the function parameters.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.