我正在使用从网站The Nature of Code-https://natureofcode.com/book/chapter-7-cellular-automata/中获取的一段代码,我使用的部分来自示例7.1。我正在尝试使用Processing IDE创建一维元胞自动机,但是我一直收到错误消息,指出特定位置缺少括号。
错误: -缺少毛刺支架“}”,第32行 -“}”上的语法错误,将其删除,第40行
我已经检查了多次,但是我看不出这是怎么回事。尽管我确实尝试过更改它们,但只是为了获得更多错误。我以为也许他们只是在错误的地方,但我也看不出情况如何。据我所知,它们似乎是正确的,但也许我遗漏了一些东西。这是我第一次使用Processing,距上次使用Java已经很长时间了。所以也许我弄错了。
class CA {
int[] cells;
int[] ruleset;
int w = 10;
// The CA should keep track of how
// many generations.
int generation = 0;
CA() {
cells = new int[width/w];
ruleset = new int[]{0,1,0,1,1,0,1,0};
cells[cells.length/2] = 1;
}
// Function to compute the next generation
void generate() {
int[] nextgen = new int[cells.length];
for (int i = 1; i < cells.length-1; i++) {
int left = cells[i-1];
int me = cells[i];
int right = cells[i+1];
nextgen[i] = rules(left, me, right);
}
cells = nextgen;
// Increment the generation counter.
generation++;
}
int rules(int a, int b, int c) {
String s = "" + a + b + c;
int index = Integer.parseInt(s,2);
return ruleset[index];
}
for (int i = 0; i < cells.length; i++) {
if (cells[i] == 1) fill(0);
else fill(255);
// Set the y-location according to the generation.
rect(i*w, generation*w, w, w);
}
}
该程序应该在下一维上打印每一代一维CA。
答案 0 :(得分:0)
CA
类末尾的for循环不应该存在。这就是为什么会出现错误的原因:解析器期望方法声明或类的末尾,因此使用大括号。
看起来此循环实际上正在绘制CA
状态,因此您可以尝试将其包装在void draw(){}
方法中。那么它在语法上应该是正确的,不确定它是否按预期工作。或者,将for循环移到类之外,然后根据fill
类实例的cells
状态调用CA
。
无论如何,将需要一些其他代码来创建CA
实例并调用generate
函数。