1

Trying to write a simple program that prints the Fibonacci sequence. I want to create a method named fibNumber that calculates the value of the Fibonacci sequence and then I want to use a for loop in the run() method to print that value 15 times. The trouble I'm having is the println method in the for loop. Eclipse says "n cannot be resolved to a value" and "i cannot be resolved to a value." I thought I covered all the bases in terms of declaring the variables. Am I missing something?

What I want to write is all the way up to F15

F0 = 0
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5

import acm.program.*;


public class FiccononicSequence extends ConsoleProgram {

public void run(){
    println("This program prints out the Fibonacci sequence.");

    for (i = 1; i <= 15; i++){

        println("F" + i + " = " + fibNumber(n));

    }




}


private int fibNumber(int n){
    if (n == 0){
    return 0; 
    }else{ if (n == 1){
    return 1;
    }else{
    return fibNumber(n - 1) + fibNumber(n - 2);




}      
Jessica M.
  • 1,451
  • 12
  • 39
  • 54
  • I'm a little confused. How is println("F" + i + " = " + fibNumber(i)); contain the value of the method fibNumber? Won't it just print the increase in the value of i in the for loop? – Jessica M. Oct 29 '12 at 06:49
  • even after I change fibNumber(n) to fibNumber(i) Eclipse still gives me a "i cannot be resolved to a variable" error. I'm not sure what the error is. – Jessica M. Oct 29 '12 at 07:23
  • Check the AmitD, Quoi answers and mine. You lacked declarate the `i` variable as `int`. – Luiggi Mendoza Oct 29 '12 at 07:34

4 Answers4

2

Try this...

- The problem here is about the scope of the variable.

- i should be declared of type int, which is local to the run() method instead of n, as n is another local variable in fibNumber() method.

- i and n are totally in different scope and are invisible to each other.

for (int i = 1; i <= 15; i++){

        println("F" + i + " = " + fibNumber(i));  // i should be here.

    }
Kumar Vivek Mitra
  • 33,294
  • 6
  • 48
  • 75
0

Whats "n"? You should probably be using "i" instead of "n" there.

Kumar Bibek
  • 9,016
  • 2
  • 39
  • 68
0

The problem is how you call the fibnumber method, because the n variable isn't declared anywhere in the run method context:

for (int i = 1; i <= 15; i++){
    println("F" + i + " = " + fibNumber(n));  //what's n?
}

To fix it, just send the i variable:

for (int i = 1; i <= 15; i++){
    println("F" + i + " = " + fibNumber(i));  //now it compiles!
}
Luiggi Mendoza
  • 85,076
  • 16
  • 154
  • 332
0

You need to define i in the for loop and pass it to fibNumber

for (int i = 1; i <= 15; i++){<-- Define i 
    println("F" + i + " = " + fibNumber(i));<-- pass `i `
}
Amit Deshpande
  • 19,001
  • 4
  • 46
  • 72