Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DFA上的Java代码行_Java_Finite Automata - Fatal编程技术网

DFA上的Java代码行

DFA上的Java代码行,java,finite-automata,Java,Finite Automata,我最近在课堂上学习了确定性有限自动机,我偶然发现了一段来自princeton.edu的代码,它简单地在java上解释了它。问题是我对java不是很精通,我想问一下int[]]行接下来是什么={{0,1},{1,2},{2,0};在代码中是这样的 我似乎理解整个代码是如何工作的。但是我不能真正理解int[]]行接下来是什么={{0,1},{1,2},{2,0};确实如此。这似乎是基本的java。有人能告诉我吗?谢谢 /****************************************

我最近在课堂上学习了确定性有限自动机,我偶然发现了一段来自princeton.edu的代码,它简单地在java上解释了它。问题是我对java不是很精通,我想问一下int[]]行接下来是什么={{0,1},{1,2},{2,0};在代码中是这样的

我似乎理解整个代码是如何工作的。但是我不能真正理解int[]]行接下来是什么={{0,1},{1,2},{2,0};确实如此。这似乎是基本的java。有人能告诉我吗?谢谢

/*************************************************************************
*  Compilation:  javac DFA.java
*  Execution:    java DFA
*  
*  Simulate a DFA which recognizes the language of all strings over
*  the binary alphabet { a, b } with a multiple of three b's.
*
*  % java DFA babbabab
*  false
*
*  % java DFA babbaabbba
*  true
*
*************************************************************************/

public class DFA {
public static void main(String[] args) {
    String input = args[0];
    boolean[] accept = { true, false, false };
    int[][] next = {               //<---   
                     { 0, 1 },     //<---  
                     { 1, 2 },     //<--- 
                     { 2, 0 }  };  //<--- 
    int state = 0;
    for (int i = 0; i < input.length(); i++) {
        state = next[state][input.charAt(i) - 'a'];
    }
    System.out.println(accept[state]);
}
}

有关更多信息,请访问源代码的链接:

这是java中的多维数组

以下是oracle文档中的引用:

在Java编程语言中,多维数组是一种数组,其组件本身就是数组

class MultiDimArrayDemo {
public static void main(String[] args) {
    String[][] names = {
        {"Mr. ", "Mrs. ", "Ms. "},
        {"Smith", "Jones"}
    };
    // Mr. Smith
    System.out.println(names[0][0] + names[1][0]);
    // Ms. Jones
    System.out.println(names[0][2] + names[1][1]);
}
}

该程序的输出为:

史密斯先生 琼斯女士

此链接可能有助于为您清理:

此行声明一个数组,其中每个元素都是一对或一个整数。从技术上讲,每个元素都是一个整数数组一个数组数组-在这个特殊的例子中,每个数组包含2个元素

在本例中,数组似乎正在定义状态转换,其中第一个元素是当前状态,第二个元素是下一个状态。

下一个变量引用包含DFA状态转换的二维数组

数组有三行,DFA中的每个状态对应一行

下一行显示行中的数组成员分别是“a”和“b”的下一个状态

 state = next[state][input.charAt(i) - 'a']
仅当b的数量为3的倍数时,DFA才处于状态0。如果它以零状态结束,则该数组表示该字符串已被接受

boolean[] accept = { true, false, false };

它是一个二维整数数组。