7 svar
377 visningar
cky182 är nöjd med hjälpen
cky182 34 – Fd. Medlem
Postad: 27 apr 2021 10:59

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();

Smörbulten 8
Postad: 27 apr 2021 11:22

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.

cky182 34 – Fd. Medlem
Postad: 30 apr 2021 09:50

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?

cky182 34 – Fd. Medlem
Postad: 30 apr 2021 09:56

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.

Laguna 28587
Postad: 30 apr 2021 09:58

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;

cky182 34 – Fd. Medlem
Postad: 2 maj 2021 11:00 Redigerad: 2 maj 2021 11:01

Ingen av de två föreslagna sätten fungerar.

"Error CS0165 Use of unassigned local variable 'passenger'"

Laguna 28587
Postad: 2 maj 2021 13:34

Sätt 'passenger' till antalet passagerare från början.

Smörbulten 8
Postad: 2 maj 2021 22:56

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.

Svara Avbryt
Close