Erro na linguagem cSharp
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();
}
}
}
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
Curtidas 0
Melhor post
Bruno Pardim
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();
}
}
}
GOSTEI 1