这个编译错误来自哪里?

时间:2015-06-18 09:21:40

标签: java

我现在感到非常沮丧,我沮丧的主要原因是以下错误:

LogicalAutomaton.java:16: error: cannot find symbol
        Cellular[i][j] = new Cellular (null, Cellular[i+1][j], null, Cellular[i][j+1]);
        ^
symbol:   variable Cellular
location: class LogicalAutomaton

类层次结构如下:

home --> code --> Automata --> automata

以下是代码:

这是类Cellular.java,在home / code / Automata / automata:

package automata;

public class Cellular {

  private int state;
  private Cellular upper, lower, left, right;

  public Cellular (Cellular upper, Cellular lower, Cellular left,Cellular right) {
    this.state = 0;
    this.upper = upper;
    this.lower = lower;
    this.left = left;
    this.right = right;
  }

}

这是类LogicalAutomaton.java,在home / code / Automata中:

import automata.Cellular;
import java.util.Arrays;

public class LogicalAutomaton extends Cellular {

  public static void main (String[] args) {

    int n = 3;
    Cellular[][] a = new Cellular[n][n];

    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        if (i == 0) {
          if (j == 0) {
            Cellular[i][j] = new Cellular (null, Cellular[i+1][j], null, Cellular[i][j+1]);
          }
          else {
            if (j == n-1) {
              Cellular[i][j] = new Cellular (null, Cellular[i+1][j], Cellular[i][j-1], null);
            }
            else {
            Cellular[i][j] = new Cellular (null, Cellular[i+1][j], Cellular[i][j-1], Cellular[i][j+1]);
            }
          }
        }
      }
    }

  }

}

LogicalAutomaton.java的代码要长得多,但主要的想法是访问Cellular对象数组以初始化它们,每次我尝试这样做时,它都会抛出我说的错误。有趣的是,编译器并没有哀叹Cellular阵列的声明。

你知道我可能做错了吗?

提前谢谢!

编辑:

抱歉笨拙的问题;这是错误代码的一部分。

2 个答案:

答案 0 :(得分:1)

您将数组定义为

Cellular[][] a = new Cellular[n][n];

但稍后再使用

Cellular[i][j] = new Cellular (null, Cellular[i+1][j], null, Cellular[i][j+1]);

实际上,你应该使用

a[i][j] = new Cellular (null, Cellular[i+1][j], null, Cellular[i][j+1]);

您收到的错误消息

  

LogicalAutomaton.java:16:错误:找不到符号           Cellular [i] [j] = new Cellular(null,Cellular [i + 1] [j],null,Cellular [i] [j + 1]);           ^符号:变量蜂窝位置:类LogicalAutomaton

说我找不到名为Cellular的变量,而不是我找不到这个类。这是因为您尚未定义名为 Cellular 的变量,您定义的变量称为 a

答案 1 :(得分:0)

此问题是由于可访问性。 Cellular类中无法访问LogicalAutomoton类。检查CLASSPATH变量并检查import语句是否正确。