dabear Skrevet 30. januar 2008 Del Skrevet 30. januar 2008 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
Gjest Slettet+1374861 Skrevet 30. januar 2008 Del Skrevet 30. januar 2008 (endret) 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 30. januar 2008 av Slettet+1374861 Lenke til kommentar
pgdx Skrevet 31. januar 2008 Del Skrevet 31. januar 2008 public boolean equalNumbers(Double ... myDoubleArray) { for (int i = 0; i < myDoubleArray.length-1; i++) { if (myDoubleArray[i] != myDoubleArray[i+1]) return false; } return true; } Lenke til kommentar
dabear Skrevet 31. januar 2008 Forfatter Del Skrevet 31. januar 2008 Takk for den, men jeg trengte i utgangspunktet ikke ferdigkode, var mer ute etter mest effektive metode å gjøre dette på Gikk tilbake til vanlige if-statements, da jeg begrensa datagrunnlaget til bare tre variabler. Prøvde òg Array.sort Lenke til kommentar
pgdx Skrevet 31. januar 2008 Del Skrevet 31. januar 2008 Den "mest effektive" metoden er nok å gjøre som jeg skriver der; dog, hvor "effektivt" vil du egentlig ha det når det er snakk om tre tall som skal sammenlignes? Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå