У вас есть несовместимость между статическими методами и переменными экземпляра.
Подумайте об этом так: переменная экземпляра связана с конкретным экземпляром класса; статическая переменная связана с самим классом . Вы вызываете статические методы через класс:
ClassI.callStaticMethod();
Тогда как вы вызываете метод экземпляра через экземпляр класса:
public ClassI classObj = new ClassI();
classObj.callInstanceMethod();
В опубликованном вами коде переменная экземпляра ("canvas") устанавливается статическим методом (main
связан с классом, а не с экземпляром).
Поэтому вам нужно будет создать методы экземпляра для изменения / обновления вашего «холста» и создать экземпляр класса в статической функции. Этот объект («экземпляр») можно использовать для обновления переменной экземпляра.
Вот пример:
public class Foo {
public char canvas[][];
public static void main(String[] args) {
Foo fooObj = new Foo(); //creates an instance of this class
fooObj.createCanvas(2, 2);
fooObj.modifyCanvas(0, 0, 'c');
}
public void createCanvas(int x, int y) {
canvas = new char[x][y];
}
public void modifyCanvas(int x, int y, char c) {
canvas[x][y] = c;
}
}
Это, очевидно, не однозначное соотношение с вашим заданием, но я уверен, что вы сможете адаптировать его к тому, что вы делаете: -)