Проблем със задача 05. Walking
Дава ми Exeption. Всъщност знам къде ми е грешката, но не мога да я коригирам.
Ето го решението ми: https://pastebin.com/13geAiKv
Ето и условието на задачата:
Габи иска да започне здравословен начин на живот и си е поставила за цел да върви 10 000 стъпки всеки ден. Някои дни обаче е много уморена от работа и ще иска да се прибере преди да постигне целта си. Напишете програма, която чете от конзолата по колко стъпки изминава тя всеки път като излиза през деня и когато постигне целта си да се изписва "Goal reached! Good job!"
Ако иска да се прибере преди това, тя ще въведе командата "Going home" и ще въведе стъпките, които е извървяла докато се прибира. След което, ако не е успяла да постигне целта си, на конзолата трябва да се изпише: "{разликата между стъпките} more steps to reach goal."
Благодаря колега. Решения на задачата мога да си намеря, но ще бъда благодарен някой да ми посочи къде точно бъркам и защо ми дава exeption. Явно има проблем с парсването.
Благодаря за отделеното време.
Дава ти exeption защото ако вместо число поставя string - някаква дума, то няма как да я преобразува в число. Това става където парсваш:
string command = Console.ReadLine();
int steps = int.Parse(command);
Аз съм го направил така че ако е число сумата е равна на сумата + стъпките. Това е при първия if където преобразувам.
Ако ли не отива на else if и там чете string: Going home.
Само това трябва да оправиш.
using System;
namespace _5._4Walking
{
class Walking
{
static void Main(string[] args)
{
string styp = Console.ReadLine();
int rezoltat = 0;
if (styp == "Going home")
{
styp = Console.ReadLine();
if (styp == "Going home")
{
Console.WriteLine($"{10000} more steps to reach goal.");
}
else
{
int rezo = int.Parse(styp);
rezoltat = rezo + rezoltat;
if (rezoltat < 10000)
{
Console.WriteLine($"{10000 - rezoltat} more steps to reach goal.");
}
else
{
Console.WriteLine("Goal reached! Good job!");
}
}
}
else
{
rezoltat = int.Parse(styp);
while (rezoltat < 10000)
{
string stypka = Console.ReadLine();
if (stypka != "Going home")
{
int rezolt = int.Parse(stypka);
rezoltat = rezolt + rezoltat;
}
else if (stypka == "Going home")
{
string rezola = Console.ReadLine();
if (rezola =="Going home")
{
break;
}
else {
int rezo = int.Parse(rezola);
rezoltat = rezo + rezoltat;
break;
}
}
}
if (rezoltat < 10000)
{
Console.WriteLine($"{10000 - rezoltat} more steps to reach goal.");
}
else
{
Console.WriteLine("Goal reached! Good job!");
}
}
}
}
}