how to make this variable have a double value #Dart

Asked

Viewed 313 times

0

If anyone can give me a detailed description, thank you, I’m new to the language

import 'dart:io';
void main(){
  var saldo = 100;
   print('   ');
  print('gostaria de sacar dinheiro?: (y/n)');
  String escolha = stdin.readLineSync();
  if (escolha =='y' || escolha =='Y'){
    print('seu saldo é $saldo reais.');
    print('quanto gostaria de sacar?');
    dynamic saque = stdin.readLineSync();
    saque = int.parse(saque);
    if(saque <=saldo){
      print('seu saque de $saque reais foi realizado com sucesso!');
      dynamic saldo_novo = saldo - saque;
      print('novo saldo: $saldo_novo');
    } else{
      print('saldo insuficiente para realizar a operação');
    }
  }
  if (escolha ==  'n' || escolha ==  'N'){
    print('seu saldo não foi alterado');
  }
  print('----------------------');
  print('finalizando programa...');
}

Error message

#0      int._throwFormatException (dart:core-patch/integers_patch.dart:133:5)
#1      int._parseRadix (dart:core-patch/integers_patch.dart:144:16)
#2      int._parse (dart:core-patch/integers_patch.dart:102:12)
#3      int.parse (dart:core-patch/integers_patch.dart:65:12)
#4      main (file:///C:/Users/Allen/Documents/Dart%20things/funcoes.dart:11:17)
#5      _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307:19)
#6      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)

2 answers

1


Just change the variables of the type dynamic for double

How you will work with real values, everything will be double

import 'dart:io';

void main(){
  double saldo = 100.0;
  print('   ');
  print('gostaria de sacar dinheiro?: (y/n)');

  String escolha = stdin.readLineSync();

  if (escolha =='y' || escolha =='Y'){
    print('seu saldo é $saldo reais.');
    print('quanto gostaria de sacar?');

    double saque = double.parse(stdin.readLineSync());

    if(saque <= saldo){
      print('seu saque de $saque reais foi realizado com sucesso!');
      double saldo_novo = saldo - saque;
      print('novo saldo: $saldo_novo');
    } else{
      print('saldo insuficiente para realizar a operação');
    }
  }
  if (escolha ==  'n' || escolha ==  'N'){
    print('seu saldo não foi alterado');
  }
  print('----------------------');
  print('finalizando programa...');
}

The guy dynamic allows its variable to receive any type of data, but after you set the first value to it, it accepts only the type of the value informed. For example, if you enter a text in a variable dynamic, this will just accept String.

  • the fact that I use Dynamics, doesn’t adjust the variable for me? or just tell me that I can change the value and type?

  • got it, I thought that automatically the input would be a string like python, and needed to convert.

  • gave the following error: Error: A value of type 'String' can’t be Assigned to a variable of type 'double'. as I believe that just like python, an input is naturally a string

  • Oops, sorry, I forgot that question, I’ll adjust the answer.

  • See the answer again, I’m not being able to test it now, but I believe that a toDouble() should solve.

  • I made a small test with the Dart:core library import, but toDouble appears as undefined.

  • 1

    Look at my answer, I put the modification wrong, and then I set it right, so it should be all right.

Show 2 more comments

0

actually, after making the following change made error saying that toDouble does not work for strings.

import 'dart:core'; //biblioteca do toDouble()
void main(){
  double saldo = 100.0;
  print('   ');
  print('gostaria de sacar dinheiro?: (y/n)');

  String escolha = stdin.readLineSync();

  if (escolha =='y' || escolha =='Y'){
    print('seu saldo é $saldo reais.');
    print('quanto gostaria de sacar?');

    dynamic saque = stdin.readLineSync();
    saque = saque.toDouble();
    if(saque <= saldo){
      print('seu saque de $saque reais foi realizado com sucesso!');
      var saldo_novo = saldo.toDouble() - saque;
      print('novo saldo: $saldo_novo');
    } else{
      print('saldo insuficiente para realizar a operação');
    }
  }
  if (escolha ==  'n' || escolha ==  'N'){
    print('seu saldo não foi alterado');
  }
  print('----------------------');
  print('finalizando programa...');
}

Browser other questions tagged

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