title: Cannot refer to a non-final variable inside an inner class defined in a different method
body: <p>Edited:
  I need to change the values of several variables as they run several times thorugh a timer. I need to keep updating the values with every iteration through the timer. I cannot set the values to final as that will prevent me from updating the values however I am getting the error I describe in the initial question below:</p>
  <p>I had previously written what is below:</p>
  <blockquote>
  <p>I am getting the error &quot;cannot refer to a non-final variable inside an inner class defined in a different method&quot;.</p>
  <p>This is happening for the double called price and the Price called priceObject. Do you know why I get this problem. I do not understand why I need to have a final declaration. Also if you can see what it is I am trying to do, what do I have to do to get around this problem.</p>
  </blockquote>
  <pre><code>public static void main(String args[]) {
  
      int period = 2000;
      int delay = 2000;
  
      double lastPrice = 0;
      Price priceObject = new Price();
      double price = 0;
  
      Timer timer = new Timer();
  
      timer.scheduleAtFixedRate(new TimerTask() {
          public void run() {
              price = priceObject.getNextPrice(lastPrice);
              System.out.println();
              lastPrice = price;
          }
      }, delay, period);
  }
  </code></pre>