kaaasen 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
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
kaaasen 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
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
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å