java: переменная, неизвестная в текущем контексте?

#java

#java

Вопрос:

Эта строка генерирует ошибку компилятора «не известна в текущем контексте». Почему?

 if (inputMatrix[newPosition.i][newPosition.j]=='*'){
        // variable not known in current context, why? 
        }
  

Объявление метода:

  static Point moveForward(Point oldPosition, int matrixSize, char orientation, char [][] inputMatrix){

         // add possible new Position
        Point newPosition;

        //first return oldPosition border positions in which the robot shouldn't move 

        if ((orientation=='O')amp;amp;(oldPosition.j==0))
               return oldPosition;

        if ((orientation=='E')amp;amp;(oldPosition.j==(matrixSize-1)))
               return oldPosition;

         if ((orientation=='N')amp;amp;(oldPosition.i==0))
               return oldPosition;

         if ((orientation=='S')amp;amp;(oldPosition.i==(matrixSize-1)))
               return oldPosition;


         if ((orientation=='O'))
             newPosition = new Point(oldPosition.i, oldPosition.j-1);
         if ((orientation=='E'))
             newPosition = new Point(oldPosition.i, oldPosition.j 1);
        if ((orientation=='S'))
             newPosition = new Point(oldPosition.i-1, oldPosition.j);
        if ((orientation=='N'))
             newPosition = new Point(oldPosition.i 1, oldPosition.j);


        //then return oldPosition for positions in which the robot is blocked by *
        if (inputMatrix[newPosition.i][newPosition.j]=='*'){
        // variable not known in current context, why? 
        }




        return null;


    }
  

Ответ №1:

Потому что не гарантируется, что newPosition был инициализирован. Использовать

 Point newPosition = null;
  

в начале файла. Это инициализирует значение переменной как минимум нулем.