Jag skulle rekommendera att du använder de inbyggda datumfunktionerna i stället, men om du strikt måste göra det själv ska du använda modulusoperatorn, ser olika ut i olika språk. C#:
int rest = theYear % 4;
if (rest == 0) doIt("theYear är jämnt delbart med 4");
Sen är förstås jämna århundraden inte skottår, så det blir:
if ((theYear % 4) == 0 && (theYear % 100) != 0)
doIt("theYear är jämnt delbart med 4 men inte med hundra och är således antagligen ett skottår");
Tal som är jämt delbara med 100 samt 400 är skottår tex. 2000.
gjorde så här för att kontrollera det, är det ett bra eller dåligt sätt?
public string Year(int intYear)
{
if ((intYear % 4) == 0 && (intYear % 100) != 0 )
{
return intYear + " är ett skottår!";
}
else
{
if((intYear % 400) == 0)
{
return intYear + " är ett skottår!";
}
return intYear + " är inte ett skottår!";
}
}
EDIT:
En liten annan sak jag också funderar över.
Kan man göra så att om man inte skriver in någonting fast även trycker på skicka så kommer det upp en text "du har inte skrivit in någåt år" eller om man skriver in något med ord så står det "du får inte skriva med bokstäver".
Som det är nu kommer det upp ett felmeddelande.
Applikationen har fungerat bra, men då satt jag och testade de olika verktygen och la in en timer på sidan för att se vad det var. Jag tog bort den och kompilerade om projektet.
När jag skulle starta applikationen och se hur det såg ut fick jag ett felmeddelande, "System.Format.Exception has occurred in SkottAr.exe" debugade projektet och fick fram en sträng som var fel.
private void btnCheck_Click(object sender, System.EventArgs e)
{
int intYear = Convert.ToInt32(boxYear.Text); //Raden som blir fel
string strMyYear;
CheckYear myCheckYear = new CheckYear();
strMyYear = myCheckYear.Year(intYear);
lblResults.Text = strMyYear;
}
Felmeddelande när jag debuggar:
Additional information: Input string was not in a correct format.
259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e