Member 13485130 Ответов: 1

Как я могу искать 5 слов на пяти разных сайтах и считать каждое слово на пяти сайтах в java?


вот чего я достиг на выходе получается счетчик первого слова в пяти сайтах а остальные слова равны 0

Что я уже пробовал:

package challenge2;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;

/**
 *
 * @author DELL
 */
public class Challenge2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws MalformedURLException, IOException {
        String[] keywords = new String[]{"Sport","Russia","US","Uk","Irma"};
        String[] webs = new String[]{"http://www.bbc.com/","http://www.cnn.com/"
               ,"https://www.nbcnews.com/", "https://www.theguardian.com/international",
               "https://www.washingtonpost.com/"};
        int[]count=new int[5];
        File WU = new File("c:\\Users\\DELL\\Desktop\\challenge\\statisctics.txt");
        FileWriter U=new FileWriter(WU,true);
        BufferedWriter out  = new BufferedWriter(U);
        PrintWriter pr = new PrintWriter(out,true);
     
        
        File file=new File("c:\\Users\\DELL\\Desktop\\challenge\\statisctics.txt");
        for(int i=0;i<5;i++)
        {
            URL web = new URL(webs[i]);
            Scanner scan=new Scanner(web.openStream());
        
            for(int j=0;j<5;j++)
            {
                while (scan.hasNext())
                {
                    String satr=scan.nextLine();
                    if(satr.indexOf(keywords[j])>0)
                    {
                        count[j]++;
                    }
                }
            }
        }
        for(int i=0;i<5;i++)
        {
            pr.println("the word  :  " +keywords[i]+"   is stated  " + count[i]);
        }
    }
}

1 Ответов

Рейтинг:
0

Richard MacCutchan

    for(int j=0;j<5;j++)
    {
        while (scan.hasNext())
        {
            String satr=scan.nextLine();
            if(satr.indexOf(keywords[j])>0)
            {
                count[j]++;
            }
        }
    }
}

В приведенном выше коде вы ищете первое слово в каждой строке веб-страницы. Однако, когда Вы дойдете до конца ввода и попытаетесь найти следующее слово, текст больше не будет прочитан, поэтому счет будет равен нулю. Вам нужно искать каждое слово в каждой строке, которую вы сканируете. Что-то вроде:
while (scan.hasNext())
{
    String satr=scan.nextLine();
    for(int j=0;j<5;j++)
    {
        if(satr.indexOf(keywords[j])>0)
        {
            count[j]++;
        }
    }
}