2014-09-22 5 views
0

У меня проблемы. У меня есть * txt-файл, который я читаю в программе (ЧАСТЬ A). Это работает очень хорошо, а также использует сканер для поиска слова/имени «Винни-Пух» в ЧАСТИ В. У меня возникают проблемы с частью C, где я хочу, чтобы пользователь выбирал для него/сама это слово, чтобы искать * txt-файл для.Пользовательский поиск, поиск по txt-файлу

Кажется, что я делаю, сканер возвращает 4 (количество раз, когда появляется последнее слово в тексте).

Надежда некоторые из вас, ребята могли бы помочь мне с ЧАСТЬ С.

Ниже приведен код, и он компилирует просто отлично.

Спасибо.

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); 
    } 
} 

ответ

0

В вашем коде есть несколько ошибок. Здесь исправлена ​​часть C. Прежде всего, используя brukerInput.equals («pluskvamperfektum»), вы хотели проверить, равен ли экземпляр Scanner строковый литерал. Вам нужно прочитать строку из файла и проверить, является ли строка, введенная пользователем частью ее, например, она встречается в неотрицательном индексе. Вы также забыли сбросить счетчик. Еще одна важная вещь в реальных программах - закрыть все ресурсы, когда они не нужны - на этот раз я сделал это для soekeOrd2.

antall = 0; 
Scanner soekeOrd2 = new Scanner(new File(filNavn)); 
Scanner brukerInput = new Scanner(System.in); 
String brukerInput2; 

System.out.println("Hvilket ord vil du soeke paa?: "); 
brukerInput2 = brukerInput.nextLine(); 

while (soekeOrd2.hasNextLine()) { 
    String line = soekeOrd2.nextLine(); 
    if (line.indexOf(brukerInput2) >= 0) { 
    antall +=1; 
    } 
} 
System.out.println("Antall forekomster av " + brukerInput2 + " er: " + antall); 
soekeOrd2.close() 

наилучшими пожеланиями: Balázs

+0

Благодаря целый букет! Ваш ответ был действительно полезен, и я выяснил некоторые серьезные проблемы для меня. Хотел бы я проголосовать за ваш ответ, но мне не хватает репутации. – kimbert007

Смежные вопросы