5 svar
3040 visningar
g4l3n 127
Postad: 5 sep 2019

TryParse metoden c#

Hej,

Jag ska i denna uppgift använda TryParse. Jag har skrivit in TryParse i min kod enligt nedan. Jag får ut värde 0 om jag skriver in bokstäver när jag istället vill få ut meddelande "inte ett nummer" från min try/catch. Och skriver jag jag in en siffra först som är för litet eller stort och försöker igenom och skriver bokstäver så får jag meddelande "grattis, du gissade rätt".

Vad har jag gjort fel?

 

Uppgift: Din uppgift blir att se till att programmet kan köras utan körtidsfel. För detta ska du använda dig av TryParse för att hantera felaktig inmatning.

 

class Program
{
static void Main(string[] args)
{
bool spela = true;

Random slumpat = new Random();
int speltal = slumpat.Next(0,21); 

while (spela) 

{

Console.WriteLine("\n\tGissa på ett tal mellan 1 och 20: ");

Int32.TryParse(Console.ReadLine(), out int tal);

Console.ReadLine();

try
{
Console.WriteLine("Du skrev: " + tal);
}
catch (System.FormatException e)
{
Console.WriteLine("Inte ett nummer!");
}
catch (Exception e)
{
Console.WriteLine("Något gick snett!");
}

 

if (tal < speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för litet, försök igen.");
Console.ReadLine(); 
}
else if (tal > speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för stort, försök igen.");
Console.ReadLine();
}

else tal = speltal; 
{
Console.WriteLine("\tGrattis, du gissade rätt!");
Console.ReadLine(); 
spela = false;

break; 

Laguna 5673
Postad: 5 sep 2019

Kan det vara så att TryParse returnerar en felkod som du ska titta på?

Yngve Online 12049 – Mattecentrum-volontär
Postad: 5 sep 2019 Redigerad: 5 sep 2019

Int32.TryParse returnerar en boolean som du bör använda i resten av koden istället för att använda try-catch.

Yngve Online 12049 – Mattecentrum-volontär
Postad: 5 sep 2019 Redigerad: 5 sep 2019

Och så saknas det ett if och en avslutande parentes vid sista else-satsen.

Affe Jkpg 4801
Postad: 5 sep 2019 Redigerad: 5 sep 2019

Du har dålig ordning på dina "krullparenteser" , " { " och " } "

Ett tips är att efter varje "höger-krull" skriva en kommentar som exempel:

} // end else

} // end while

Du skriver:
   else tal = speltal; 
men menar
  else if tal == speltal 
fast egentligen borde det bara vara
  else

g4l3n 127
Postad: 5 sep 2019

Tack för alla svar, är helt ny i ämnet och känner mig lite osäker.

Yngve skrev:

Int32.TryParse returnerar en boolean som du bör använda i resten av koden istället för att använda try-catch.

Varför jag inte gjort som ovan tipsar om är för att jag fått till uppgift att skriva in Int32.TryParse såhär och tillägga try /catch.
Och skriver jag: else (tal ==speltal); så får jag error CS0201, "Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement.

Svara Avbryt
Close