Gå til innhold

Hvordan sende variabler mellom metoder?


Anbefalte innlegg

Jeg har noen filer jeg vil lese, og legge inn i et array (for utskrift til JPG).

Takket være hjelp herfra greier jeg å lese gjennom mappe-strukturen og komme frem til riktige filer. Men jeg greier ikke å sende dataene tilbake til den metoden som skal skrive alt sammen til JPG.

Det ser sånn ut:

mappe1/snitt.csv

mappe2/snitt.csv

mappe3/snitt.csv

....

 

Målet er å lese inn fildataene og mappenavnene sammen. Jeg vil ta med begge verdiene over i metoden som skal skrive til JPG.

Hadde tenkt å løse dette med en 2-dimensjonal double array og en String-array.

Slik at det hadde blitt;

array[0][] og String[0] hører sammen

array[1][] og String[1] hører sammen ....

 

Jeg har tenkt som følger:

public traverser(dir) {
   leser mapper
   hvis fil == "snitt.csv" lesFilTilArray(fil); //det ligger også forskjellige filer innimellom
}

public lesFilTilArray(File fil) {
   while (nextLine != null) {
       Array[x][i] =  leser inn alle csv-elementer;//x er fil nr x av total y, derfor må man holde styring på hvor mange man har lest
    }
    Husk også hvilken mappe man er i. Denne skal bli til String[x]
}

public skrivTilJpg {
   serie1 = String sistedelav(mappe1) + Array[0][];
   serie2 = String sistedelav(mappe2) + Array[1][];
   etc...
   skriver til JPG;
}

 

Det er mulig jeg gjør det tungvint her, men.

Kanskje det hadde vært bedre å lese inn alt inne i skrivTilJpg, men jeg tenkte å lese gjennom disken bare én gang. Det er derfor jeg vil løse det med å lese inn alt til en array med en gang.

 

Jeg har prøv litt med 'return', men en metode vil bare returnere én type av gangen.

Ikke får jeg lagd noen globale arrays heller.

 

Mulig denne er ganske enkel, men... :ermm:

 

Jeg er ganske fersk på java. Vi har ikke kommet dit hvor dette er omtalt ennå. :)

Lenke til kommentar
Videoannonse
Annonse
Akkurat. Og hvordan kunne denne klassen f.eks. sett ut?

 

Hva burde ha vært i main()? Og hva burde ha vært i klassemetoder?

Og hvor skulle man plassere min int-array og string-array?

7940635[/snapback]

 

 

public class MinKlasse{

//Klassevariabler som er tilgjengelige for alle metoder etableres her


public static void main(String[] args){
Denne metoden er hovedmetoden som kjøres når du kjører programmet og må kalle dine andre metoder for å utføre hensikten med programmet
}

//Dine metoder...

}

Lenke til kommentar

som du selv sier: return kan kun returnere én type.

En dårlig løsning er å returnere en Objekt[]-tabell, men det er alså en dårlig løsning.

 

Hva hvis metoden returnerte ett MinReturnKlasse-objekt?

Nå har jeg ikke helt forsått nøyaktige hvilke verdier du vil returnere, men om du hadde en klasse som ca slik ut:

Klikk for å se/fjerne innholdet nedenfor
public class MinReturnKlasse{
 //private variabler, de data du øsnket å returnere
 private String mappenavn;
 private String[] filer;

 /* konstruktør */
 public MinReturnKlasse(String mappe, String[]alleFiler){
   mappenavn=mappe;
   filer=alleFiler;
 }

 //ulike metoder kommer her:

 /* returnerer mappenavnet */
 public getMappenavn(){
    return mappenavn;
 }

 /* returner fil-array */
 public getFiler(){
    return filer;
 }

}

(Ingen main-metode her, dette er bare en hjelpeklasse du bruker i programmet ditt. Mainmetoden bruker du til å starte selve programmet, altså ikke i denne klassen.)

 

Siden du har mange mapper (mange slike objekter som er i code-blokken over) kan du opprette en tabell av typen MinReturnKlasse[]. (Det kan være en ide å endre klassenavnet til noe bedre, f.eks. Mappe/Folder eller noe slikt.) På den måten vil folder[0] inneholde all data fra mappe nr 1. folder[1] er neste mappe osv...

 

Det betyr at når du traverserer filstrukturen og leser inn filene, så skriver du noe slikt:

String mappenavn //mappenavnet her

String[] allefiler = <alle filer i mappen> // du må også lage metoder for å finne alle filer

folder = new MinReturnKlass(mappenavn, allefiler);

i henviser til neste ledige plassering i folder-tabellen.

 

Når du er ferdig med å gå gjennom alle mapper, og har en fin folder-tabell, er det enkelt å printe ut data:

Klikk for å se/fjerne innholdet nedenfor
for (int i=0; i<folder.length; i++){
 String mappe = folder[i].getMappenavn(); //får tak i mappenavnet
 String[] filer =  folder[i].getFiler(); // henter ut fil-arrayet for den mappen
 for (int j=0; j<filer.length; j++){
   System.out.println("Fil nr "+(j+1)+": "+filer[j]); //gir utskrift slik "Fil nr 3: Kreta06.jpg"
 }
}

Tør forresten vedde på at det er masse skrivefeil og slikt her.
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...