Erro na linguagem cSharp

16/09/2019

0

C#

Foi me passado um trabalho em C#, pois não conhecemos a linguagem ainda, mas pelo meu ver fiz tudo certo. Ao compilar ele roda a primeira vez e da um erro e não estou entendendo o porque, creio que seja do buffer, porem já tentei de tudo.

System.FormatException: ''''''''''''''''A cadeia de caracteres de entrada não estava em um formato correto.''''''''''''''''
esse é o erro que aparece(apesar de falar que não tem erro)

cod


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exercicio_3
{
class Program
{
static void Main()
{
int opcao = 1;

while (opcao != 0)
{
Console.Clear();
Console.WriteLine(" [Menu de Opções]");
Console.WriteLine("1 - Média aritmética");
Console.WriteLine("2 - Média ponderada");
Console.WriteLine("0 - Sair");
Console.WriteLine("Opção: ");
opcao = int.Parse(Console.ReadLine()); // (ERRO NESTA LINHA)


switch (opcao)
{
case 1:
{
mediaAri();
Console.Clear();
break;
}
case 2:
{
mediaPon();
Console.Clear();
break;
}
case 0:
{
Console.WriteLine("Finalizando...");
Console.Read();
break;
}
default:
{
Console.WriteLine("Opção Invalida...");
Console.Read();
Console.Clear();
break;
}
}
}
}
static void mediaAri()
{
Console.Clear();
float num1, num2, media;

Console.WriteLine(" [Média aritimética]");
Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite o primeiro número: ");
num1 = float.Parse(Console.ReadLine());
Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite o segundo número: ");
num2 = float.Parse(Console.ReadLine());

media = (num1 + num2) / 2;

Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nMédia: {0:N2}", media);

Console.Read();
}
static void mediaPon()
{
Console.Clear();
float nota1, nota2, nota3, p1, p2, p3, media;

Console.WriteLine(" [Média Ponderada]");
Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite a primeira nota: ");
nota1 = float.Parse(Console.ReadLine());
Console.WriteLine("Peso: ");
p1 = float.Parse(Console.ReadLine());
Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite a segundo nota: ");
nota2 = float.Parse(Console.ReadLine());
Console.WriteLine("Peso: ");
p2 = float.Parse(Console.ReadLine());
Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite a terceira nota: ");
nota3 = float.Parse(Console.ReadLine());
Console.WriteLine("Peso: ");
p3 = float.Parse(Console.ReadLine());

media = ((nota1 * p1) + (nota2 * p2) + (nota3 * p3)) / 3;

Console.WriteLine("Média: ", media);

Console.Read();
}
}
}
Adriano

Adriano

Responder

Post mais votado

17/09/2019

Certamente alguma coisa no buffer, com um try catch dá para contornar isso, você também pode fazer sua aplicação só ler os números de tbm.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main()
        {
            int opcao = 1;

            while (opcao != 0)
            {
                Console.Clear();
                Console.WriteLine(" [Menu de Opções]");
                Console.WriteLine("1 - Média aritmética");
                Console.WriteLine("2 - Média ponderada");
                Console.WriteLine("0 - Sair");
                Console.WriteLine("Opção: ");

                try
                {
                    //Provalmente alguma coisa no buffer quebra o parse
                    opcao = int.Parse(Console.ReadLine()); // (ERRO NESTA LINHA)
                }
                catch { }

                switch (opcao)
                {
                    case 1:
                        {
                            mediaAri();
                            Console.Clear();
                            break;
                        }
                    case 2:
                        {
                            mediaPon();
                            Console.Clear();
                            break;
                        }
                    case 0:
                        {
                            Console.WriteLine("Finalizando...");
                            Console.ReadKey();
                            
                            break;
                        }
                    default:
                        {
                            Console.WriteLine("Opção Invalida...");
                            Console.Read();
                            Console.Clear();
                            break;
                        }
                    
                }
               
            }

            if(opcao == 0)
            {
                Environment.Exit(0);
            }
        }
        static void mediaAri()
        {
            Console.Clear();
            float num1, num2, media;

            Console.WriteLine(" [Média aritimética]");
            Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite o primeiro número: ");
            num1 = float.Parse(Console.ReadLine());
            Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite o segundo número: ");
            num2 = float.Parse(Console.ReadLine());

            media = (num1 + num2) / 2;

            Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nMédia: {0:N2}", media);

            //Para conseguir voltar ao menu inicial
            Console.WriteLine("Enter para voltar");
            Console.ReadKey();
        }
        static void mediaPon()
        {
            Console.Clear();
            float nota1, nota2, nota3, p1, p2, p3, media;

            Console.WriteLine(" [Média Ponderada]");
            Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite a primeira nota: ");
            nota1 = float.Parse(Console.ReadLine());
            Console.WriteLine("Peso: ");
            p1 = float.Parse(Console.ReadLine());
            Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite a segundo nota: ");
            nota2 = float.Parse(Console.ReadLine());
            Console.WriteLine("Peso: ");
            p2 = float.Parse(Console.ReadLine());
            Console.WriteLine("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nDigite a terceira nota: ");
            nota3 = float.Parse(Console.ReadLine());
            Console.WriteLine("Peso: ");
            p3 = float.Parse(Console.ReadLine());

            media = ((nota1 * p1) + (nota2 * p2) + (nota3 * p3)) / 3;

            //Mudei
            Console.WriteLine("Média: ", media);
            Console.WriteLine("Enter para voltar");
            //Para conseguir voltar ao menu inicial
            Console.ReadKey();

        }
    }
}

Bruno Pardim

Bruno Pardim
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar