Citat:
Ursprungligen postat av tj.
Kod:
bool is_same = false;
for(int i=0; i<arraylength; i++){ //orkar inte googla upp hur man får fram längd på array i java...
for(int j=0; j<i; j++){
if (array[i] == array[j]){
is_same = true
break;
}
}
}
Där har du ett enkelt exempel på hur man kan jämföra element i en array med hjälp av bool.
Det där kommer ju att returnera true även om bara två element av fler än två är samma.
TS: boolean är ingen funktion utan en datatyp som kan ha antingen värdet true eller värdet false. I C(++/#) kan även 1 och 0 tolkas som true resp. false men inte i Java. Det du alltså vill göra är att m.h.a. en boolean visa om antingen alla element i en array är desamma (med att sätta en boolean till true) eller om minst ett av elementen i arrayen är annorlunde (med att sätta en boolean till false). Din kod stoppar du in i en metod som då returnerar en boolean till den som anropar funktionen. Värdet på denna boolean som returneras bestämmer du i funktionen.
Kod:
public boolean isAllTheSame(Object[] objectArray){
boolean returnValue;
//Kod för att bestämma som variabeln returnValue ska vara true eller false
return returnValue;
}
Hur koden ska se ut är ju din uppgift att skriva men jag ska peka dig i en riktning där du kan hitta svaren. Det finns en klass i Java som heter Arrays. Denna klass är utmärkt för att göra saker med arrayer. Du kan läsa om klassen här:
http://download.oracle.com/javase/7/...il/Arrays.html
Jag skulle använda mig utav en av följande metoder (inte Java-metoder nu, utan metod som i lösning).
Antingen att titta på första elementet och sedan loopa igenom arrayen och titta på elementen ett i taget. Om elementet är detsamma fortsätter vi och kolla på nästa. Är elementet inte detsamma som det första elementet avbryter vi och sätter returnValue till false. Kommer vi igenom hela arrayen utan att ha avbrutit sätter du returnValue till true. Detta är vad tj. försökte åstadkomma men misslyckades med.
Använd metoden equals som finns i alla klasser för att avgöra om två element är lika. Att använda två lika med tecken ( == ) fungerar bara på de primära datatyperna.
Kod:
firstElement.equals(anElementInTheArray);
Alternativt, titta på första elementet och därefter titta på hur lång arrayen är. Sedan skapar jag en ny array som är lika lång som den första och sätter alla element i den nya arrayen till det första elementet. Då har jag en array som den jag "vill" att den första arrayen ska vara. Sedan jämför jag helt enkelt de båda arrayerna. Är de likadana sätter jag returnValue till true och är de det inte sätter jag returnValue till false.
Kod:
int arraylength = anArray.length; //heltalet arraylength kommer att vara lika med längden på arrayen anArray
Arrays.fill(anotherArray, value); //sätter alla element i arrayen anotherArray till värdet value
boolean theSame = Arrays.equals(arrayOne, arrayTwo); //din boolean theSame (kan bytas ut mot returnValue) kommer att sättas till true om de två arrayerna arrayOne och arrayTwo är lika långa och innhåller samma element på samma plats, i annat fall kommer den sättas till false.
Den första lösningen är effektivare att köra men kräver lite mer kodskrivande själv. Den andra är lite mindre effektiv men kan vara lite lättare att förstå.