jemartinsen81 Skrevet 26. november 2007 Del Skrevet 26. november 2007 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
blackbrrd Skrevet 26. november 2007 Del Skrevet 26. november 2007 (endret) 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 26. november 2007 av blackbrrd Lenke til kommentar
LostOblivion Skrevet 26. november 2007 Del Skrevet 26. november 2007 int[] arr = {5, 2, 7, 300, 23, 53, 92, 90, 2, 0, 2, 3, 6}; int resultat = obj.searchCells(arr, 53); // resultat vil være 5 Lenke til kommentar
jemartinsen81 Skrevet 26. november 2007 Forfatter Del Skrevet 26. november 2007 (endret) 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 26. november 2007 av jemartinsen81 Lenke til kommentar
blackbrrd Skrevet 26. november 2007 Del Skrevet 26. november 2007 (endret) 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 Endret 26. november 2007 av blackbrrd Lenke til kommentar
jemartinsen81 Skrevet 26. november 2007 Forfatter Del Skrevet 26. november 2007 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 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
pgdx Skrevet 27. november 2007 Del Skrevet 27. november 2007 Det høres rett og slett ut som om searchCells kun skal ta inn ett argument, indeksen. public int searchCells(int index) { for (int i = 0; i < heltallsarray.length; i++) { if (index == heltallsarray[i]) { return i; } } return -1; } Lenke til kommentar
Cyberfrog Skrevet 27. november 2007 Del Skrevet 27. november 2007 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
pgdx Skrevet 27. november 2007 Del Skrevet 27. november 2007 blackbrrds og mitt forslag er mer i tråd med objektorientert programmering enn å passere referanser til metoder. Lenke til kommentar
jemartinsen81 Skrevet 28. november 2007 Forfatter Del Skrevet 28. november 2007 (endret) 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 28. november 2007 av jemartinsen81 Lenke til kommentar
pgdx Skrevet 28. november 2007 Del Skrevet 28. november 2007 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
pgdx Skrevet 28. november 2007 Del Skrevet 28. november 2007 For all fremtidig diskusjon angående Java-konvensjoner: http://java.sun.com/docs/codeconv/html/Cod...s.doc6.html#430 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å