Я пишу класс, который читает содержимое текстового файла (dictionary.txt) и использует метод isValidWord, который возвращает истину или ложь в зависимости от того, что буквы, введенные пользователем, формулируют слово в текстовом файле
Буквы, введенные пользователем, приходят через объекты "Tile" (я написал класс Tile, у которого есть метод getLetter, который возвращает букву).Таким образом, ArrayList объектов Tile передается методу isValidWord.
Конструктор принимает строку имени файла (программа драйвера передает его dictionary.txt).Затем конструктор считывает содержимое файла в ArrayList строк.
Метод isValidWord принимает ArrayList объектов Tile.Каждый объект мозаики содержит букву, поэтому я использую метод getLetter из класса Tile, чтобы получить букву каждого объекта мозаики, добавляя его в строку.
Затем я пытаюсь прочитать текстовый файл словарь.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;
}
Моя проблема в том, что несмотря ни на что isValidWord всегда возвращает false.Я проверил переменную str (которая действительно печатает строку буквами из формы объектов мозаики), но по какой-то причине оператор if никогда не выполняется