Gå til innhold

Hvordan formulerer jeg en "array referanse" til dette metodekallet?


Anbefalte innlegg

Objektklassen "Heltallsarray" har følgende metodekall, som skal søke gjennom arrayen:

 

	public int searchCells(Heltallsarray[]test, int index)
{
	for (int i = 0; i < heltallsarray.length; i++)
	{
		if (index == heltallsarray[i])
		{
			return i;
		}
	}
	return -1;
}

 

Klientklassen skal utføre søket, og large resultatet i variabelen "resultat".

 

int resultat = heltallsarray.searchCells(XXXXXXXXX, index);

 

Problemet er at jeg ikke fatter hva jeg skal skrive inn der det nå står "XXXXXXXXX". Hva skal altså "Heltallsarray[]test" ta imot? Jeg vet den skal ta imot en "referanse", men aner ikke hvordan jeg skal formulere denne.

 

På forhånd takk.

Lenke til kommentar
Videoannonse
Annonse

Litt forvirrende formulert spørsmål, men tenker du kanskje trenger litt basis-kunnskap:

 

public class Test {
//Deklarasjon av en heltallsarray:
int[] array = {1,2,3,4};

public static void main(String[] argz) throws Exception {
 int result = getIndexOfHeltall(array, 5);
 System.out.println("result: "+ result);
 result = getIndexOfHeltall(array, 2);
 System.out.println("result: "+ result);
}

public int getIndexOfHeltall(int[] heltallsarray, heltall) {
  for(int i = 0; i < heltallsarray.length; i++) {
  if(heltallsarray[i] == heltall) {return i };
  }
  return -1;
}
}

 

System.out vil bli:

result: -1

result: 1

Endret av blackbrrd
Lenke til kommentar

Takk, mulig det bare er jeg som er trøtt i hodet nå, men jeg klarer ikke overføre det dere sier til mine klasser ettersom arrayen ikke er opprettet i samme klasse som skal sende søket.

 

Dette er klientklassen:

http://pastebin.com/m1bdf4d17

 

Dette er objektklassen:

http://pastebin.com/m6637f29d

 

Det er altså linje 14 i klientklassen som jeg ikke vet hvordan jeg skal få til å fungere. Å bruke arraynavnet "search", fra objektklassen fungerer tydeligvis ikke.

 

Takk for assistansen. :)

Endret av jemartinsen81
Lenke til kommentar

Endre linje 22 fra:

public int searchCells(Heltallsarray[]search, int index)

til

public int searchCells(int index)

 

Endre linje 14 fra:

int resultat = heltallsarray.searchCells(search, index);

til

int resultat = heltallsarray.searchCells(index);

 

:)

 

... en ting.. jeg misliker skoleoppgaver som dette veldig mye. Den enkleste måten å gjør den oppgaven her på er ikke å bruke to klasser :p

Endret av blackbrrd
Lenke til kommentar
Endre linje 22 fra:

public int searchCells(Heltallsarray[]search, int index)

til

public int searchCells(int index)

 

Endre linje 14 fra:

int resultat = heltallsarray.searchCells(search, index);

til

int resultat = heltallsarray.searchCells(index);

 

:)

 

... en ting.. jeg misliker skoleoppgaver som dette veldig mye. Den enkleste måten å gjør den oppgaven her på er ikke å bruke to klasser :p

 

Enig der ja, men læreren insisterer på at vi skal ta i bruk objektorientert programmering for alle øvelsesoppgaver.

 

Det du sier fungerer godt det, men oppgaveteksten sier: "Programmet (main) skal sende denne verdien (søkenøkkelen), sammen med referansen til arrayen, til metoden finnVerdi". En referanse skal altså være med. Det er denne jeg ikke fatter poenget med, eller hvordan jeg skal håndtere. :-/

Lenke til kommentar

public int searchCells(Heltallsarray[] search, int index) gir ihvertfall ikke mye mening, da arrayen "search" ikke brukes i metoden. Det blackbrrd/pgdx foreslår fremstår som det eneste fornuftige.

 

 

Angående denne finnVerdi-metoden... Jeg kjenner ikke oppgaven, men dette kunne vært en mulighet i klientklassen:

// Her er "array" en referanse 
// Nærmere bestemt til et Heltallsarray-objekt lagret på memory heap
private static int finnVerdi(Heltallsarray array, int index) {

[indent]return array.searchCells(index);[/indent]

}

 

En meningsløs metode, men den oppfyller kravet du insisterer sånn på om å sende en referanse.

 

Kan erstatte linje 14 i main() slik:

int resultat = finnVerdi(heltallsarray, index);

 

Skal du bruke en referanse i et metodekall er det (ihvertfall i Java) altså ikke mer mystisk enn at du bruker variabelnavnet til objektet.

Lenke til kommentar

Takk skal dere ha for feedbacken. En arrayreferanse er noe jeg må lære meg å bruke korrekt men, så det er fint om dere kan ta en titt på denne koden og komme med forslag på hva som ikke er riktig. Det er kun en feil her så vidt jeg vet, og det er i linje 13 i ArrayKlient klassen som skal kalle på søket. Selve søkemetoden er static, slik at den skal kunne taes i bruk av andre klasser og. Arrayreferansen brukes altså for å identifisere hvilken array det skal søkes i, men problemet er å implementere dette på riktig måte. Det er ett eller annet jeg overser...

 

Array:

http://pastebin.com/m1b722132

 

ArrayKlient:

http://pastebin.com/m3eb57a3d

Endret av jemartinsen81
Lenke til kommentar

Feilen er uansett hva du tenker at du ønsker å sende denne referansen til objektet inn i en metode som hører til det objektet du i så tilfelle skulle sendt med.

 

Det eneste du kan gjøre, er dette, men det er helt absurd og hinsides hva OOP handler om:

public static int searchCells(Array arrayObject, int searchIndex) {
       for (int i = 0; i < arrayObject.array.length; i++) {
           if (arrayObject.array[i] == searchIndex) {
               return i;
           }
       }
       return -1;
   }

 

Og vennligst ha "{" på samme linje som blokkstart som jeg har skrevet over.

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...