Fel på calculator
Ok, jag håller på med en uppgift där jag vill att den ska räkna ut hur många personer som befinner sig på ett tåg vi varje station. Vissa går på, andra går av vid varje station och då vill jag ha en summa av det utskriven vid varje station.
Jag är säker på att lösningen är simpel men jag kan inte lista ut den.
Det är just här jag tänker att jag har missat något: passenger = enteringToInt - exitingToInt;
Hur ska jag göra så att det som användaren skriver in på Entering vid varje station adderas?
Här är koden:
class Program
{
static void Main(string[] args)
{
int capacity = 40;
int stations = 0;
int passenger;
int excess;
string entering;
string exiting;
string waiting;
int enteringToInt;
int exitingToInt;
int waitingToInt;
for (stations = 0; stations <= 10; stations++)
{
if(stations == 1 || stations != 10 && stations != 0)
{
Console.WriteLine("Station " + stations);
Console.WriteLine("People entering: ");
entering = Console.ReadLine();
enteringToInt = Int32.Parse(entering);
Console.WriteLine("People exiting: ");
exiting = Console.ReadLine();
exitingToInt = Int32.Parse(exiting);
Console.WriteLine("People waiting at station: ");
waiting = Console.ReadLine();
waitingToInt = Int32.Parse(waiting);
passenger = enteringToInt - exitingToInt;
Console.WriteLine("Total passengers onboard: " + passenger);
Console.WriteLine();
if (passenger < capacity)
{
} else
{
excess = passenger - capacity;
Console.WriteLine ("Too many passengers onboard, entry prohibited. On station " + stations + " there are " + excess + " people waiting to board the train. ");
break;
}
if (stations == 9)
{
Console.WriteLine("Total passengers at this station: " + passenger + " All passengers must disembark, endstation.");
}
if (stations == 10)
{
Console.WriteLine("Passengers left on train: " + passenger);
}
}
}
Console.ReadLine();
Det är precis på det stället du markerat!
Med "="-tecknet så ger du passenger ett helt nytt värde (påstigande - avstigande) på varje station istället för att addera varje station.
För att lösa det kan du använda dig av "Addition assignment operator". Detta kommer dock leda till ett annat fel och det är att din passenger variabel inte initialiserad.
Vad är addition assignment operator?
Och om användningen av den bara leder till ett nytt problem så har jag alltså inte kommmit alls närmare en lösning?
Jag google och testade det du föreslog och jag då uppenbarade sig ett problem som var väntat.
Hur löser jag då detta? De var ju det som var min initiala fråga.
Det du vill göra är
passenger = passenger + enteringToInt - exitingToInt;
Det som föreslogs var att göra samma sak på det här sättet:
passenger += enteringToInt - exitingToInt;
Ingen av de två föreslagna sätten fungerar.
"Error CS0165 Use of unassigned local variable 'passenger'"
Sätt 'passenger' till antalet passagerare från början.
Precis som jag skrev i sista meningen på mitt första svar så leder ändringen till ett annat fel, och det är att du inte initialiserar dina variabler. Initialisering innebär att du sätter ett första värde i variabeln. Ofta skriver man int number = 0 eller string x = string.Empty eller "".
När du skriver
passenger += enteringToInt - exitingToInt
så betyder det
passenger = passenger + (enteringToInt - exitingToInt).
I och med att passenger inte har något värde i sig så vet inte kompilatorn hur den ska göra uträkningen.
Lokala variabler måsta initialiseras innan kompilatorn tillåter dig använda dom, därför får du ett kompileringsfel.