Dʋgɢtung Skrevet 22. september 2014 Del Skrevet 22. september 2014 Hei!Så var det nok en gang et nybegynnerspørsmål fra min side. Jeg har fått i oppgave å lage et program som i første omgang leser en txt-fil og printer den. Det har jeg fått til. Så var andre del av oppgaven å telle antall ganger ordet "Winnie-the-Pooh" forekom. Det har jeg også fått til. Siste del av oppgaven derimot, den har jeg fiklet med i timesvis, og jeg finner ikke ut hvordan jeg retter opp i feilen. Det som skjer er at scanneren jeg har lagt inn under "PART C" i oppgaven teller det siste ordet i teksten, selv om den tar imot bruker-inputten. For ordens skyld, "pluskvamperfektum" står der i mangel av noe bedre, siden jeg ikke forstår helt hva jeg skal skrive der. Legger ved koden nedenfor, som kompilerer, og txt-filen som vedlegg. import java.util.Scanner; import java.io.File; import java.io.BufferedReader; import java.io.FileReader; public class Innlesing { public static void main(String[] args) throws Exception { String winnie; int antall = 0; int linjeNummer = 1; String filNavn = "winnie.txt"; Scanner scanFil = new Scanner(new File(filNavn)); // PART A while (scanFil.hasNextLine()) { String linje = scanFil.nextLine(); System.out.println("Linje " + linjeNummer + ": " + linje); linjeNummer++; } // PART B Scanner soekeOrd = new Scanner(new File(filNavn)); while (soekeOrd.hasNextLine()){ winnie = soekeOrd.nextLine(); if (winnie.equals("Winnie-the-Pooh")){ antall += 1; } } System.out.println("Antall forekomster av Winnie-the-Pooh er: " + antall ); // PART C Scanner brukerInput = new Scanner(System.in); String brukerInput2; System.out.println("Hvilket ord vil du soeke paa?: "); brukerInput2 = brukerInput.nextLine(); while (scanFil.hasNextLine()) { brukerInput2 = scanFil.nextLine(); if (brukerInput.equals("pluskvamperfektum")) { antall +=1; } } System.out.println("Antall forekomster av " + brukerInput2 + " er: " + antall ); } } Lenke til kommentar https://www.diskusjon.no/topic/1629484-s%C3%B8ke-gjennom-txt-fil-brukervalgt-ord/
tusseladdden Skrevet 22. september 2014 Del Skrevet 22. september 2014 equals er engelsk for "er lik"/"er det samme som" og metoden sjekker om objektet du bruker metoden på er likt objektet du sender inn. Altså sjekker du brukerInput som er en Scanner , er det samme som strengen "pluskvamperfektum", dette er garantert ikke det du vil sjekke. På slutten skriver du ut antall variabelen som du brukte i forrige oppgave til å telle noe helt annet. Lenke til kommentar https://www.diskusjon.no/topic/1629484-s%C3%B8ke-gjennom-txt-fil-brukervalgt-ord/#findComment-21995444
Dʋgɢtung Skrevet 22. september 2014 Forfatter Del Skrevet 22. september 2014 Ja, jeg skjønner jo at noe er riv ruskende galt her, men jeg er virkelig blind for å se løsningen på problemet. Såvidt jeg har skjønt må jo det som brukeren skriver inn sjekkes mot noe? Føler meg skikkelig på villspor, for å si det mildt! Lenke til kommentar https://www.diskusjon.no/topic/1629484-s%C3%B8ke-gjennom-txt-fil-brukervalgt-ord/#findComment-21995493
Fred7555 Skrevet 22. september 2014 Del Skrevet 22. september 2014 I Java så brukes equals()-metoden for å sjekke om to Stringer er like hverandre. @kimbert007: Er noen ting du må fikse på for å få det til å funke: - Du bruker antall-variabelen flere steder uten å sette den til 0 igjen, slik at resultatet fra B vil påvirke C. Enten settt antall til 0 etter B, eller lag en ny variabel - Du bruker to forskjellige Scanner i A og B, men i C bruker du scanneren igjen fra A, som da er på slutten av filen. Lag en ny en der og. - Av en eller annen grunn så spør du om et ord fra brukeren, for å så overskrive det igjen i loopen. Du må spørre om et ord, også sjekke om scanner.nextLine().contains(brukerInput2). Her er en fungerende versjon med noen modifikasjoner: import java.util.Scanner; import java.io.File; public class Innlesing { public static void main(String[] args) throws Exception { int antall = 0; int linjeNummer = 1; String filNavn = "winnie.txt"; Scanner aScanner = new Scanner(new File(filNavn)); // PART A while (aScanner.hasNextLine()) System.out.println("Linje " + linjeNummer++ + ": " + aScanner.nextLine()); aScanner.close(); // PART B Scanner bScanner = new Scanner(new File(filNavn)); while (bScanner.hasNextLine()) if (bScanner.nextLine().contains("Winnie-the-Pooh")) antall++; System.out.println("Antall forekomster av Winnie-the-Pooh er: " + antall); antall = 0; bScanner.close(); // PART C Scanner cScanner = new Scanner(new File(filNavn)); Scanner brukerInput = new Scanner(System.in); System.out.print("Hvilket ord vil du soeke paa?: "); String searchWord = brukerInput.next(); while (cScanner.hasNextLine()) if (cScanner.nextLine().contains(searchWord)) antall++; System.out.println("Antall forekomster av " + searchWord + " er: " + antall); cScanner.close(); brukerInput.close(); } } Lenke til kommentar https://www.diskusjon.no/topic/1629484-s%C3%B8ke-gjennom-txt-fil-brukervalgt-ord/#findComment-21995891
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å