c# loop problem, någon kunnig?
Jag har fastnat på olika smådelar i denna kod.
Först o främst representerar programmet ett schema där användaren väljer 0, 1 eller 2.
0 stänger ner programmet och 1 så hämtar sopbilen varannan vecka, medans val 2 så hämtar sopbilen var 6: e vecka.
1. Det jag fastnat på är i ReadIntegerValue() metoden, while loopen där 'weeks' inte blir assignad 2 eller 6(veckor) beroende på 'value' 1 eller 2.
meningen är att weeks ska användas till for-loopen så att det skriver ut resultatet.
2. Det är något jag gör fel, förtillfället går inte loopen alls antingen körs den alltid en gång(även om jag väljer 0 eller blir oändliga loops), eller så körs den inte alls.
3 sen verkar inte 'index += weeks' incrementet fungera alls på grund av att weeks på något sätt inte blir satta värdena 2 eller 6.
Om någon snäll o kunig person skulle kunna hjälpa mig, är jag väldigt tacksam.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Assignment_2
{
class WasteSchedule
{
/// <summary>
/// Input Variables
/// </summary>
private int numOfInput;
/// <summary>
/// output Variables
/// </summary>
private int weeks;
/// <summary>
/// Reads private method and make those callable.
/// </summary>
public void Start()
{
ReadInput();
ReadIntegerValue();
CalculateWeeksResults();
}
/// <summary>
/// Reads the input integer by the user
/// </summary>
/// <param name="numOfInput">Input - a given choice frum user.</param>
/// <returns>The integer value from the console.</returns>
private void ReadInput()
{
Console.WriteLine("\n\nChoose type of trash bin:");
Console.WriteLine("\n\nBin no 1. Kitchen trash, household wastes(every other week");
Console.WriteLine("Bin no 2. Paper, carton packages, yard wastes, ect(every 6th week)");
Console.WriteLine("0 to exit program");
numOfInput = int.Parse(Console.ReadLine());
Console.WriteLine();
}
/// <summary>
/// Take the integer and put it in the while-loop.
/// Value 0 for quiting the program. Value 1 for for week = 2. value 2 for week to be = 6.
/// </summary>
/// <param name="num">num = numOfInput from previous ReadInput() method.</param>
/// <param name="value">The value should be 0, 1 or 2</param>
/// <param name="weeks">if value 1 then week is assigned to 2, if value 2 then week is assigned to 6</param>
private void ReadIntegerValue()
{
bool done = false; //initiation
int value = 0; //for the input
while (!done)//
{
value = numOfInput;
if (value == 0)
{
done = true; //quits the program
}
else if (value == 1)
{
weeks = 2;
}
else if (value == 2)
{
weeks = 6;
}
}
}
/// <summary>
/// A for that is looping if the value is 1 or 2.
/// If other value, the for-loop should not run.
/// </summary>
/// <param name="weeksInYear">Max weeks in a year. If index max year - end the loop.</param>
/// <param name="index">index starting at 1 = first week in a year. </param>
/// <param name="weeks">adding to index increment, so the index should either increase to 2 or 6 per loop </param>
private void CalculateWeeksResults()
{
int weeksInYear = 52;
int index;
for (index = 1; index <= weeksInYear; index += weeks)
{
Console.Write("{0,15} {1,2}", "Week", index);
}
}
}
}
kallelsen av metoden fungerar på en annan klass och fungerar bra.