我需要创建具有字母的DFA:{a,b,c}&这个字母表接受第一个和最后一个字母不同的单词。 即。
“a” - 是不可接受的
“ab” - 可以接受
“aaa bb” - 是不可接受的
“cbba” - 可以接受
我首先尝试检查开头是否有“a”,但是出了点问题,特别是如果我有i.o. file.txt中的“ab”或“ac”。
来源:
import java.io.*;
import java.util.ArrayList;
public class Task
{
public static void main(String[] args) throws FileNotFoundException, IOException
{
BufferedReader reader = new BufferedReader(new FileReader("file.txt "));
ArrayList<String> wordList = new ArrayList<>();
String line = null;
while ((line = reader.readLine()) != null)
{
wordList.add(line);
}
for (String word : wordList)
{
if (word.matches("^a"))
{
if (word.matches("ab") || word.matches("^ac"))
{
System.out.print(word+" - OK\n");
}
else
{
System.out.print(word+" - STOP (word doesn't exists in alphabet)\n");
System.exit(0);
}
}
}
}
}
答案 0 :(得分:0)
您的第一个“words.matches”只会匹配“ a ”,如果您希望匹配所有以“ a ”开头的单词,然后是其他内容必须使用“ ^ a。* ”,其他匹配也一样。