webForumDet fria alternativet

Jämnt delbara tal

.NET

3 svar · 959 visningar · startad av MagnusJ

Medlem sedan apr. 2004150 inlägg
Frågan#1

Jag håller på att göra ett litet program som räknar ut om året man skriver in är ett skottår eller inte.

Jag undrar nu hur man gör för att kolla om årtalet man skriver in är jämt delbart med fyra.

Finns det nån metod man kan använda sig av för att se om det blir någon decimal i talet man får fram?

Medlem sedan juni 200032 967 inlägg
#2

Du kan använda operatorn modulo.

VB.NET
C#

Medlem sedan juni 20008 205 inlägg
#3

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

\r D'oh! pwn3d

Medlem sedan apr. 2004150 inlägg
#4

Okej, tackar.

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
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)