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