Tafsen Skrevet 17. september 2007 Skrevet 17. september 2007 Eg skal lage eit program med fleire klasser, og alle klassene trenger tilgang til to arrays. Kva er det beste måten å løyse dette problemet på?
NevroMance Skrevet 17. september 2007 Skrevet 17. september 2007 Du kan jo lage get/set metoder i ene klassen, da er arrayet kun i ene klassen, mens det andre har tilgang til å legge til og hente verdier derfra gjennom get/set metodene. En annen måte er å sette arrayet public, da kan du nå det ved å skrive <navn på object>.<navn på array> en siste måte jeg kan komme på er ved å sende over arrayet til den andre klassen, det du da må huske på er å oppdatere i begge klassene når du oppdaterer i den ene, altså blir de to andre enklere. Det som blir "penest" i mine øyne er helt klart å bruke get/set metoder. Kanskje også en remove metode hvis du skal fjerne noe fra arrayet. Men begge måtene er mulige måter å løse det på.
Tafsen Skrevet 17. september 2007 Forfatter Skrevet 17. september 2007 Korleis sett eg arrayet public då? Lat oss seie at desse to arraya skal være public. String[][] mat = new String[15][10] int[][] antal = new int[15][10]
NevroMance Skrevet 17. september 2007 Skrevet 17. september 2007 public String[][] mat = new String[15][10] public int[][] antal = new int[15][10]
Tafsen Skrevet 17. september 2007 Forfatter Skrevet 17. september 2007 Då får eg illeagel start of expression
NevroMance Skrevet 17. september 2007 Skrevet 17. september 2007 Hva er resten av koden? Huska alle {} og ; ??
Tafsen Skrevet 18. september 2007 Forfatter Skrevet 18. september 2007 class test { public static void main(String[] args) { public String[][] ost = new String[4][5]; } } Gir: javac test.java test.java:3: illegal start of expression public String[][] ost = new String[4][5]; ^ 1 error
NevroMance Skrevet 18. september 2007 Skrevet 18. september 2007 Aaaah... I java er ALT public som standard. Altså trenger du bare skrive <objekt>.ost[4][3] = "Hei"; For å sette den til "Hei". Selv om dette jo ikke er noen "pen" måte å gjøre det på.
thpost Skrevet 18. september 2007 Skrevet 18. september 2007 (endret) alt er ikke defalt public, default er "Package" Problemet er at arrayen blir definert inne i main metoden. og er dermed utenfor scopet til klassen Test og blir da en lokal variabel i main. Om du gjør slik blir det bedre. public class Test{ //må være static om du skal benytte den i main her (siden main er static) public static String[][] ost = new String[5][4]; public static void main(){ //do stuff } public String[][] getOst(){ return ost; } MEN å sette klasse variable (fields) til public er ikke noen bra måte å løse dette på(disse bør alltid være private)da det bryter enkapsuleringen av feltet. Benytt heller en getter som du ser over. da kan du hente referanse til arrayet med å kalle metoden getOst() Kan hende du må definere arrayet som static siden du skal bruke det i en static metode, mener det er slik. Endret 18. september 2007 av thpost
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å