Вы сказали, что в вашем считывателе файлов произошла ошибка, но в вашем коде все еще есть ошибка .
Здесь я проинструктировал ваш код так, чтобы его действие былояснее.Перед запуском этой программы сделайте прогноз того, каким будет ее вывод .Затем запустите программу.Был ли вывод правильным?
public static void Main()
{
string currentState = "x1";
string[] input = {"a", "a", "b", "z"};
string[] states2 = {"x1", "x1", "x2", "x2", "x3", "x3", "x4", "x4"};
string[] tokenActions = {"a", "b", "a", "b", "a", "b", "a", "b" };
string[] output = {"x1", "x3", "x2", "x1", "x3", "x4", "x2", "x3"};
for (int k = 0; k < input.Length; k++) //It is 4
{
if (input[k] == "z")
{
Console.WriteLine("final state is {0}", currentState);
break;
// Environment.Exit(0);
}
else
{
Console.WriteLine("new input {0}", input[k]);
for (int j = 0; j < tokenActions.Length; j++) //its 8 and same as states and output
{
if (currentState == states2[j] && input[k] == tokenActions[j])
{
Console.WriteLine("input is {0} current state is {1} new state is {2}", input[k], currentState, output[j]);
currentState = output[j];
}
}
}
}
}
Теперь вы видите свою ошибку?
Задайте себе вопрос: как можно было предотвратить эту ошибку, когда я изначально написал код ?Какие у вас есть идеи относительно того, как вы могли бы написать код более четко, чтобы вы не могли написать эту ошибку?