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

[Projeto] Erro na saída dos dados

O código está sem erros entretanto na hora de executar está bugado, vou mostrar na imagem abaixo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

import "dart:io";
void main(){
  double numeroUm = 0;
  double numeroDois = 0;
  String operacao = "";
 

  void soma(){
    print("Resultado=${numeroUm+numeroDois}");
}
  void subtracao(){
    print("Resultado=${numeroUm-numeroDois}");
  }
  void multiplicacao(){
    print("Resultado=${numeroUm*numeroDois}");
  }
  void divisao(){
    print("Resultado=${numeroUm/numeroDois}");
  }
  void calcular(){
    switch(operacao){
    case "+":
    soma();
    case "-":
    subtracao();
    
    case "*":
    multiplicacao();
    
    case "/":
    divisao();
    break;
    default:
      print("Opção inválida.Por favor, selecione as operações disponíveis");
  }

print("Digite o primeiro valor:");

String? entrada = stdin.readLineSync();

if(entrada != null){
  if(entrada != ""){
    numeroUm = double.parse(entrada);
  }
}
print("Digite uma operação:");

entrada = stdin.readLineSync();
if(entrada != null){
  operacao = entrada;
}

print("Digite o segundo valor:");

entrada = stdin.readLineSync();
if(entrada != null){
  if(entrada != ""){
    numeroDois = double.parse(entrada);
  }
}
}
calcular();
}

Coloquei o código todo para verificação de erros.

2 respostas
solução!

Olá, Gustavo!

O problema está no seu switch dentro da função calcular(). Você esqueceu de adicionar o break em alguns casos, o que faz com que todas as operações sejam executadas após a primeira correspondência. Vamos corrigir isso:

void calcular() {
  switch (operacao) {
    case "+":
      soma();
      break;
    case "-":
      subtracao();
      break;
    case "*":
      multiplicacao();
      break;
    case "/":
      divisao();
      break;
    default:
      print("Opção inválida. Por favor, selecione as operações disponíveis");
  }
}

Deve ficar assim:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Adicionei o break após cada chamada de função dentro do switch, exceto no default, que já está correto. Isso deve resolver o problema de múltiplas operações sendo executadas.

Espero ter ajudado! Bons estudos!

Sucesso

obrigado Victor!