Java 如何检查文本文件以查看其是否包含字符串?

Java 如何检查文本文件以查看其是否包含字符串?,java,file,class,arraylist,Java,File,Class,Arraylist,我正在编写一个类,该类读取文本文件(dictionary.txt)的内容,并使用isValidWord方法,该方法根据用户输入的字母是否构成文本文件中的单词返回true或false 用户输入的字母来自“Tile”对象(我编写了Tile类,它有一个getLetter方法返回字母)。因此,一个Tile对象的ArrayList被传递给isValidWord方法 构造函数接受一个文件名字符串(驱动程序将其传递给dictionary.txt)。然后,构造函数将文件内容读入字符串数组列表 isValidWo

我正在编写一个类,该类读取文本文件(dictionary.txt)的内容,并使用isValidWord方法,该方法根据用户输入的字母是否构成文本文件中的单词返回true或false

用户输入的字母来自“Tile”对象(我编写了Tile类,它有一个getLetter方法返回字母)。因此,一个Tile对象的ArrayList被传递给isValidWord方法

构造函数接受一个文件名字符串(驱动程序将其传递给dictionary.txt)。然后,构造函数将文件内容读入字符串数组列表

isValidWord方法获取平铺对象的ArrayList。每个tile对象都包含一个字母,因此我使用tile类中的getLetter方法获取每个tile对象的字母,同时将其附加到字符串中

然后,我尝试通读文本文件dictionary.txt,看看该文件是否包含上一部分的字符串;如果是,则isValid设置为true

private boolean isValid;
private String str;
private ArrayList<String> list = new ArrayList<String>();

public Dictionary(String fileName) throws IOException
{

      File file = new File(fileName);
      Scanner s = new Scanner(file);
      while (s.hasNextLine())
      {
         list.add(s.nextLine());
      }
      str = "";
      isValid = true;
}

public boolean isValidWord(ArrayList<Tile> tiles) throws IOException
{     

      StringBuilder sb = new StringBuilder(); 
      for(int i=0; i< tiles.size(); i++)
      {
         sb.append(tiles.get(i).getLetter());
      } 

      str = sb.toString();  

      File file = new File("dictionary.txt");
      Scanner s = new Scanner(file);

      while (s.hasNextLine())
      {

         String line=s.nextLine();

         if(line.contains(str))
         {
            isValid = true;
         }
         else
            isValid = false;
      }   

      return isValid;
}
私有布尔值是有效的;
私有字符串str;
private ArrayList list=new ArrayList();
公共字典(字符串文件名)引发IOException
{
文件=新文件(文件名);
扫描仪s=新扫描仪(文件);
而(s.hasNextLine())
{
list.add(s.nextLine());
}
str=“”;
isValid=true;
}
公共布尔值isValidWord(ArrayList tiles)引发IOException
{     
StringBuilder sb=新的StringBuilder();
对于(int i=0;i

我的问题是,不管怎样,isValidWord总是返回false。我已经测试了变量str(它确实打印了tile objects表单中的字符串和字母),但由于某种原因,if语句从未得到满足

删除临时
isValid
变量;即使文件中包含单词,除非您立即返回,否则您的下一次迭代将使该
为false
(并且您不需要它)。像

while (s.hasNextLine())
{
    String line=s.nextLine();
    if(line.contains(str))
    {
        return true;
    }
}   
return false;