cool_water Skrevet 17. oktober 2010 Del Skrevet 17. oktober 2010 Hei hei! Sitter litt fast med en skoleoppgave jeg jobber med. Vil nødig vente til i morgen for hjelp så tyr til dere Jeg har lagd to klasser + en main metode. La oss si at klassene heter klasse1 og klasse2. Main metoden hører til klasse1, den er vel egentlig irrelevant, men iallefall. Hvordan kaller jeg på en metode jeg har lagd i klasse1 i klasse2? På forhånd takk Lenke til kommentar
delfin Skrevet 17. oktober 2010 Del Skrevet 17. oktober 2010 Kommer litt an på hva du skal gjøre...? Hvis du har klasse A og klasse B kan du gjøre f.eks dette: I klasse A: B minklasseB = new B(); minklasseB.minMetode(); Eventuelt om klasse B er static: I klasse B: public static int leggSammen(int a, int b) { return a+b; } I klasse A: int sum = B.leggSammen(3, 4); // returnerer 7 Litt vanskelig å være kort og spesifikk på et så generelt spørsmål Lenke til kommentar
cool_water Skrevet 17. oktober 2010 Forfatter Del Skrevet 17. oktober 2010 (endret) Hmm, beklager, er ganske ny på dette se Skal prøve å forklare litt nærmere I klasseA har jeg lagd en metode som heter f.eks.: public void lesTekst() { Scanner tastatur = new Scanner(System.in); System.out.println("Hva er overskriften?"); overskrift = tastatur.nextLine(); System.out.println("Hvor mange ord er det i teksten?"); ord = tastatur.nextDouble(); ..... osv. } Mens jeg har en klasseB som vil bruke denne metoden, altså informasjonen jeg har fått fra denne metoden. Jeg vet ikke om jeg forklarte det litt bedre nå Og det er ikke en static, jeg skal bruke det i en void, om jeg ikke har gjort feil Det er forøvrig ikke en main metode. Disse to klassene er ikke en main metode, går det da an å kalle på metoden som ligger i den ene klassen, slik at den kan brukes i den andre klassen? Endret 17. oktober 2010 av cool_water Lenke til kommentar
delfin Skrevet 17. oktober 2010 Del Skrevet 17. oktober 2010 Skjønner fortsatt ikke hva du prøver å oppnå? i klasse B kan du jo skrive: klasseA a = new klasseA(); a.lesTekst(); Dette vil kjøre lesTekst() på a. Tror du må prøve å forklare en gang til... hva er det du prøver å oppnå? Rart eksempel du har funnet deg der Lenke til kommentar
quantum Skrevet 18. oktober 2010 Del Skrevet 18. oktober 2010 Hmm, beklager, er ganske ny på dette se Skal prøve å forklare litt nærmere I klasseA har jeg lagd en metode som heter f.eks.: public void lesTekst() { Scanner tastatur = new Scanner(System.in); System.out.println("Hva er overskriften?"); overskrift = tastatur.nextLine(); System.out.println("Hvor mange ord er det i teksten?"); ord = tastatur.nextDouble(); ..... osv. } Mens jeg har en klasseB som vil bruke denne metoden, altså informasjonen jeg har fått fra denne metoden. Jeg vet ikke om jeg forklarte det litt bedre nå Og det er ikke en static, jeg skal bruke det i en void, om jeg ikke har gjort feil Det er forøvrig ikke en main metode. Disse to klassene er ikke en main metode, går det da an å kalle på metoden som ligger i den ene klassen, slik at den kan brukes i den andre klassen? Skal du bruke det i en void? Tror du må slå opp hva "void" betyr. Du trenger forøvrig ikke noen main-metode for å kalle metoden din, det kan gjøres fra en hvilkensomhelst metode i en hvilkensomhelst klasse som har tilgang. For å kalle metoden din må du - i en eller annen klasse - gjøre KlasseA kA = new KlasseA(); kA.lesTekst(); Du får ikke sånn umiddelbart noe resultat tilbake fordi metoden er void. Men du kan hente ut verdier fra kA etter at du har kjørt lesTekst() int ordCount = kA.ord; String overskrift = kA.overskrift; (Strengt tatt bør du ha get-metoder i KlasseA for å unngå å bruke de lokale variablene direkte.) Lenke til kommentar
cool_water Skrevet 19. oktober 2010 Forfatter Del Skrevet 19. oktober 2010 Takk for hjelpen, jeg fant ut av det Lenke til kommentar
mushin Skrevet 19. oktober 2010 Del Skrevet 19. oktober 2010 (endret) Har ett relatert problem, skriver her for å unngå ny tråd. Hvis jeg i klasse A peker til ett objekt laget fra klasse B så får jeg feilmelding. Skal forklare nærmere. peker[2][2].pris = x // Dette fungerer glimrende peker[2][2].visData() // DETTE FUNGERER IKKE, SELV OM METODEN ER DER Får feilmeldingen: "Cannot find symbol : method visData()" Både variabelen pris, og metoden visData er i klasse B, og peker[2][2] peker på et objekt av klasse B. Har tenkt ut noen hypoteser: -Metoden kommer ikke med under objekt-konstruksjon? -Adgangs problemer? Setter pris på alle hjelp. Endret 19. oktober 2010 av mushin Lenke til kommentar
quantum Skrevet 19. oktober 2010 Del Skrevet 19. oktober 2010 Har ett relatert problem, skriver her for å unngå ny tråd. Post koden din, gjerne i en egen tråd (det er et poeng med disse trådene vettø) Lenke til kommentar
mushin Skrevet 19. oktober 2010 Del Skrevet 19. oktober 2010 Har ett relatert problem, skriver her for å unngå ny tråd. Post koden din, gjerne i en egen tråd (det er et poeng med disse trådene vettø) Jess, slapp det denne gangen, fikk det til å funke. Hadde de 3 klassene jeg jobber med i seperate .java filer, tok dermed å samlet de i en og samme fil så forsvant problemet. Syntes jeg hadde snappet opp info om at det var likegyldig om man hadde de seperat el i samme fil. Noen som har en kjapp kommentar til det? Lenke til kommentar
Hieronymus Skrevet 19. oktober 2010 Del Skrevet 19. oktober 2010 Syntes jeg hadde snappet opp info om at det var likegyldig om man hadde de seperat el i samme fil. Noen som har en kjapp kommentar til det? Hvis man skal operere med flere klasser i samme fil, så kan bare en av klassene være public, og filnavnet må være navnet på public-klassen (+ .java) --- BalleB 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å