Gå til innhold

Problemer med å lage array fra tekstfil


Anbefalte innlegg

Jeg har to klasser. I den ene klassen leses det inn en tekstfil, og i en annen klasse skal den tekstfila gjøres om til array.

public class Ordene {
 
public String ordene(String sCurrentLine) {
 
BufferedReader br = null;
 
try {
 
br = new BufferedReader(new FileReader("del2.txt"));
 
while ((sCurrentLine = br.readLine()) != null) {
words = sCurrentLine;
 
}
 
} catch (IOException e) {
e.printStackTrace();
}
 
return sCurrentLine;
}
 
private String words;
 
public String getWords() {
return words;
}
 
public void setWords(String words) {
this.words = words;
}
 
public Ordene() {
this.ordene(words);
}
 
}

også i denne klassen skal jeg prøve å splitte ordene slik at de kommer i en liste av en array.

String tekst = o.getWords();
    System.out.println(tekst);
   
    String[] ord = tekst.split(" ");
    System.out.println(ord);

Og dette blir resultatet:

 kul awesome gris eple pai noen
[Ljava.lang.String;@7ae9e9b
Lenke til kommentar
Videoannonse
Annonse

Har støtt på et annet problem.

Har dette i tekstfil 1: Anders Andreas Kjetil Karoline Marius Jannicke Hander

og dette i tekstfil 2: kul awesome gris eple pai noen kulere

 

problemet mitt er at ordet "kul" ligger i "kulere" så når jeg gjør dette gjør den bare ordet kulere til "Andersere" istedenfor det den egentlig skal gjøre altså "Hander". Er det mulig å få det til slik at ordet ikke forandrer seg før jeg har trykket space, og hvis ja, ville det hjulpet?

 

 

public String fjernForkortelser(String input) {
 
tekst = o.getWords();
String[] ord = tekst.split(" ");
   
   
    tekst1 = o.getWords1();
String[] ord1 = tekst1.split(" ");
 
   
 
for (int i = 0; i < ord1.length; i++) {
input = input.replace(ord[i], ord1[i]);
}
 
 
return input;
}
Lenke til kommentar

fant ut at jeg må ha noe slikt noe:

input = input.replace("\\b"+ord[i]+"\\b", ord1[i]);
input = input.replaceAll("\\bhun\\b", "han");
input = input.replaceAll("\\bhund\\b", "katt");

men det funker ikke på den første input :(

 

hah! Glemte å endre til "replaceAll"

Endret av Emsal
Lenke til kommentar

Det kalles en enhanced for-loop / for-each loop.

 

Istedenfor å repetere et vist antall ganger (slik en for-lopp gjør), så går den gjennom alle elementene i en mengde. En slik mengde kan f.eks. være et array, og generelt alle klasser som implementerer interfacet 'Collection'

for (<datatype> <variabelnavn> : <mengde>) {
   . . .
}

Som i eksempelet over, så går han gjennom alle strengene i mengden 'ord', og skriver det ut.

 

 

Grunnen til at du fikk

 kul awesome gris eple pai noen
[Ljava.lang.String;@7ae9e9b

i et av dine tidligere innlegg, er fordi du skriver ut et array. Da skriver du ikke ut elementene, men minneaddressen til det.

 

Om du vil skrive ut et array utenom å bruke en loop, kan du bruke metoden Arrays.toString(), som tar inn et array som argument. Da får du alt på en linje med komme imellom.

Endret av Fred7555
  • Liker 1
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...