Gå til innhold

sjekke om flere variabler har samme verdi?


Anbefalte innlegg

Heppsann. Har endel double variabler (la oss si 10 stykk). Jeg ønsker å sjekke om alle disse verdiene har nøyaktig samme verdi. Hvordan ville dere gått fram da?

 

med en if-statement vil jo dette bli veldig langt:

if(var1 ==var2 && var2==var3 && var3 == var4 ...etc) {

 

Som jeg har løst det nå, har jeg lagt alle variablene i et array og loopa igjennom dette, ved å sjekke siste verdi opp mot nåværende verdi, og returnert false dersom disse ikke matcher. Det må da finnes en bedre måte? Kan jeg hente ut unike verdier i et array og sammenlikne dette med antall elementer opprinnelig i arrayet? Finnes de noen innebygd funksjon for dette? Eller burde jeg velge en annen løsning?

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+1374861

Spørs litt hva du vil oppnå.

I utgangspunktet så er jo å sjekke den første variabelen opp mot alle andre en grei løsning, men som du nevner, tungvindt.

Hvis du har alle i en array kan det utføres i en løkke, som er noe penere for øyet.

 

En tredje løsning som slår meg er å ha alle i en double[] array og så sortere denne. Da trenger du kun sjekke første mot siste for å sjekke om de er ulike. Problemet her, selvom dette også vil se pent ut i kode (gitt at du bruker innebygd sortering og ikke gjør det manuelt), er vel at selve sorteringen vel vil være noe ressurskrevende. Selvfølgelig snakker vi på ett veldig lavt nivå her, og jeg er ikke istand til å avgjøre hvor stor mengde du trenger før sorteringen veier opp for utførelsen av sjekker, men potensielt vil du tape tid på å gjøre det slik.

 

Mye blabla...

Generellt kan det se slik ut:

		double[] tall = { 4,4,4,4,4,4,6,4,4,4,4 };

	Arrays.sort(tall);

	if(tall[0] == tall[tall.length-1])
		System.out.println("Alle tallene er like");
	else
		System.out.println("Ulike tall");

 

Alternativet med løkke er jo da som du sier å sjekke dem opp mot hverandre, men trenger jo ikke å bli like mange sjekker som det er tall, i og med at du kan bryte ved funn av 'feil verdi'....

		double[] tall2 = { 4,4,4,4,4,4,4,4,4,4,4 };

	boolean like = true;

	for(int i = 1; i < tall2.length; i++)
	{
		if(tall2[0] != tall2[i])
		{
			like = false;
			break;
		}
	}

	if(like)
		System.out.println("Alle tallene er like");
	else
		System.out.println("Ulike tall");

 

... Naturligvis vil det være mer fornuftig å plassere selve sjekkingen i en egen metode og kalle den slik at du kan kjøre...

		if(talleneErLike(tallArray))
		System.out.println("Alle tallene er like");
	else
		System.out.println("Ulike tall");

 

Det med sorteringen blir vel litt avhengig av hva du senere skal bruke den til...

Endret av Slettet+1374861
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...