Проблемы с массивами int - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь скопировать машину 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");
            }


        }
    }       
}
...