Я пытаюсь скопировать машину DFA / NFA с печатными переходами. И я получаю ошибки, когда пытаюсь получить доступ к значениям из моего предустановленного массива и присвоить их переменной newState.
До сих пор я пробовал перемещать переменные внутри тел области действия, переназначать переменные и отделять функцию try catch для убедитесь, что значения binaryValue и состояния установлены правильно.
Исключением является массив вне границ. Однако я не вижу, какие запрашиваемые значения выходят за пределы. Буду признателен за любую помощь и совет
public class BinaryStringChecker {
private static boolean checker;
public static void main(String[] args) {
//user inputed variable
String userValue;
//checker for binary values variable
checker = false;
//NFA/DFA start State
int state = 0;
//transition array
int stateArray [][] = {{1,0},{2,0},{5,3},{4,4},{5,3},{6,4},{6,6}};
//User input
Scanner usersInput = new Scanner (System.in);
//Introduction
System.out.println("Implimented DFA, will accept binary strings over alphabet Σ= {0, 1} that contain two pairs of adjacent 0’s separated by an even number of alphabet symbols.");
//do while to check if values only consist of 0s and 1s
do{
System.out.println("Please enter desired string: ");
userValue = usersInput.next();
if (userValue.matches("[01]+")) {
System.out.println("Checking "+userValue);
checker = true;
usersInput.close();
}
else {
System.out.println("Thats not a binary number");
}
}
while (checker == false);
//assigning users input value
String str = userValue;
//taking binary list from STL class
STL.StringtoList(str);
//assigning list
List<Character>
chars = STL.StringtoList(str);
//getting binary string length
int stringLength;
stringLength = chars.size();
// Print the list of characters
System.out.println(chars);
//sequential iteration through users binary string
for (int i=0; i<stringLength; i++) {
//taking value from position in list
Character binaryValue = chars.get(i);
try {
int newState = stateArray[state][binaryValue];
state = newState;
System.out.println("Current state:"+state);
}
catch(Exception e) {
System.out.println("Somethings wrong here 1");
}
}
}
}