我的代码运行了 15 分钟但只有白色输出?

my code runs for 15mins but only white output?

我正在做数据清理的停用词代码。我遵循了 YouTube 上的教程:https://www.youtube.com/watch?v=ckQUlI7x7hI 他的代码可以工作并显示输出,但我的没有

我正在使用英文停用词,我的停用词示例是 "a"、"an"、"away"、"keeps"。输入将为 "An apple a day keeps the doctor away" 输出应为 "apple day the doctor".

这是我的文件的内容:https://ufile.io/gikev

代码如下:

import java.io.FileInputStream;
import java.util.ArrayList;

public class DataCleaning {


public static void main(String[] args) {

    ArrayList sw = new ArrayList<>();

    try{
        FileInputStream x = new FileInputStream("/Users/Dan/Desktop/DATA/stopwords.txt");

        byte b[] = new byte[x.available()];
        x.read(b);
            x.close();

            String data[] = new String(b).split("\n");

        for(int i = 0; i < data.length; i++)
        {
            sw.add(data[i].trim());
        }
         FileInputStream xx = new FileInputStream("/Users/Dan/Desktop/DATA/cleandata.txt");

        byte bb[] = new byte[xx.available()];
        xx.read(bb);
            xx.close();

            String dataa[] = new String(bb).split("\n");



            for(int i = 0; i < dataa.length; i++)

        {
            String file = "";
            String s[] = dataa[i].split("\s");
            for(int j = 0; j < s.length; i++)
            {
                if(sw.contains(s[j].trim().toLowerCase()))
                {
                    file=file + s[j] + " ";
                }

            }
            System.out.println(file + "\n");
        }

    } catch(Exception a){
        a.printStackTrace();
    }

   }

 }

当我 运行 挖矿时,它只会这样做:

我该怎么办?

您的代码存在 3 个问题:

  1. 因此您在最内层循环中递增了错误的变量
    导致无限循环,因为 j 总是小于
    s.length 而你永远不会递增 j。更改此行:

    for (int j = 0; j < s.length; i++) {
    

    for (int j = 0; j < s.length; j++) {
    
  2. 要打印不是停用词的单词,您需要否定您的if 条件如下:

    if (!sw.contains(s[j].trim().toLowerCase()))
    
  3. 此外,确保文件 stopwords.txt\n(new 线),因为你是根据它拆分的,而不是像 您共享的 link 中的文件。

我建议您缩进代码并使用有意义的名称来命名变量。这样调试问题会简单很多