Reputation: 1459
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);
}
Upvotes: 1
Views: 69955
Reputation: 33544
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.
}
Upvotes: 2
Reputation: 19185
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 `
}
Upvotes: 0
Reputation: 85789
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!
}
Upvotes: 0
Reputation: 9117
Whats "n"? You should probably be using "i" instead of "n" there.
Upvotes: 0